PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » OpenSource » Панель для Windows 7


Панель для Windows 7

Сообщений 1 страница 17 из 17

1

Вот здесь обсуждалась данная панель, наконец решил реализовать.  Строки взятые в коммент работают при установленноq проге Alcohol. Половина кода взята из кодархива, поэтому код смотрится сумбурно и я не стал ничего менять(прога небольшая, разобраться несложно). Спасибо Adrenalin за помощь. 
Архив

http://s48.radikal.ru/i119/1009/8d/23a07b2258f8.jpg

Код:
Enumeration
  #Window_0
  #HDD
  #CD
  #USB
  #FOLDER
EndEnumeration

Structure HiLow 
  lowlow.w 
  lowhi.w 
  hilow.w 
  hihi.w 
EndStructure 

Global NewList DISK.s()
Global NewList DISKCD.s()
Global NewList DISKZNACH.s()
Global NewList DISKCDZNACH.l()
Global aaa$
Global bbb$
Global FReeCD
Global FullCD
Global VKL
Global KOLA

DataSection
  HDD:
  IncludeBinary "HDD1.png"
  CD:
  IncludeBinary "CDR.png"
  USB:
  IncludeBinary "USB.png"
  FOLDER:
  IncludeBinary "folder.png"
EndDataSection

UsePNGImageDecoder()
ExamineDesktops()
Declare PROV()

Procedure.s GetFreeSpace(p$) 
  #div=10 
  #mask=(1<<#div)-1 
  #mul=16-#div 
  If Left(p$,2)="\\" 
    a=FindString(p$,"\",3) 
  Else 
    a=FindString(p$,"\",1) 
  EndIf 
  If a=0 : a=Len(p$) : EndIf 
  p$=Left(p$,a) 
  If GetDiskFreeSpaceEx_(@p$,@free.HiLow,@Total.HiLow,@TotalFree.HiLow) 
    hilow=Free\hilow&$ffff 
    hihi=Free\hihi&$ffff 
    lowlow=Free\lowlow&$ffff 
    lowhi=Free\lowhi&$ffff 
    hilow1=Total\hilow&$ffff 
    hihi1=Total\hihi&$ffff 
    lowlow1=Total\lowlow&$ffff 
    lowhi1=Total\lowhi&$ffff
    p=1 
    While hihi>0 Or hilow>0 Or lowhi>0 
      
      
      lowlow=(lowlow>>#div)+((lowhi & #mask)<<#mul) 
      lowhi =(lowhi >>#div)+((hilow & #mask)<<#mul) 
      hilow =(hilow >>#div)+((hihi & #mask)<<#mul) 
      hihi  =(hihi>>#div) 
      
      p+1 
    Wend
    g=1
    While hihi1>0 Or hilow1>0 Or lowhi1>0 
      
      
      lowlow1=(lowlow1>>#div)+((lowhi1 & #mask)<<#mul) 
      lowhi1 =(lowhi1 >>#div)+((hilow1 & #mask)<<#mul) 
      hilow1 =(hilow1 >>#div)+((hihi1 & #mask)<<#mul) 
      hihi1  =(hihi1>>#div) 
      
      g+1 
    Wend 
    If lowlow1>1024 
      bbb$= StrF(lowlow1/1024,2)+" "+StringField("Byte,KB,MB,GB,TB",g+1,",") 
      
    Else 
      bbb$= StrF(lowlow1,2)+" "+StringField("Byte,KB,MB,GB,TB",g,",") 
    EndIf 
    
    If lowlow>1024 
      aaa$= StrF(lowlow/1024,2)+" "+StringField("Byte,KB,MB,GB,TB",p+1,",") 
      
    Else 
      aaa$= StrF(lowlow,2)+" "+StringField("Byte,KB,MB,GB,TB",p,",") 
    EndIf 
  Else 
    aaa$="---" 
  EndIf 
EndProcedure 

Procedure VALCD(cdr.s)
  SectorsPerCluster.q : BytesPerSector.q : NumberOfFreeClusters.q 
  SetErrorMode_(#SEM_FAILCRITICALERRORS) 
  GetDiskFreeSpaceEx_(cdr.s,@SectorsPerCluster,@BytesPerSector,@NumberOfFreeClusters)
  FReeCD=(NumberOfFreeClusters)/1048576
  FullCD=(BytesPerSector)/1048576
EndProcedure

Procedure Valuedisk()
  bufflen = $FF 
  *memid = AllocateMemory(bufflen) 
  
  bufflen = GetLogicalDriveStrings_(bufflen,*memid) 
  
  i = 0 
  While i < bufflen 
    Lw.s = PeekS(*memid+i) 
    i + 4 
    LwT = GetDriveType_ (@Lw)
    If Lw<>"A:\"
      KOLA+1
      If LwT = #DRIVE_CDROM
        
        AddElement(DISKCD())
        DISKCD()=Lw
      ElseIf LwT = #DRIVE_FIXED Or LwT =#DRIVE_REMOVABLE Or LwT =#DRIVE_RAMDISK
        AddElement(DISK())
        DISK()=Lw   
      EndIf 
    EndIf
  Wend     
  FreeMemory(*memid)
  ProcedureReturn KOLA
EndProcedure
Procedure ValuediskREZ()
  bufflen = $FF 
  *memid = AllocateMemory(bufflen) 
  
  bufflen = GetLogicalDriveStrings_(bufflen,*memid) 
  
  i = 0 
  While i < bufflen 
    Lw.s = PeekS(*memid+i) 
    i + 4 
    LwT = GetDriveType_ (@Lw)
    If Lw<>"A:\"
      KOL+1
    EndIf
  Wend      
  FreeMemory(*memid)
  ProcedureReturn KOL
EndProcedure

Procedure OpenWindow_Window_0(KOLA)
  If OpenWindow(#Window_0, DesktopWidth(0), 0, 140, KOLA*75+100, "Window_0", #PB_Window_BorderLess)
    MakeToolWindow( WindowID(#Window_0), #True )
    StickyWindow(#Window_0, 1) 
    SetWindowColor(#Window_0, RGB(212, 251, 183)) 
    ;     If CreatePopupImageMenu(1)
    ;       MenuItem(1, "Смонтировать образ")
    ;       MenuItem(2,"Демонтировать образ")
    ;     EndIf
    HDDD=CatchImage(#HDD, ?HDD)
    CDDD=CatchImage(#CD, ?CD)
    FOLDERR=CatchImage(#FOLDER, ?FOLDER) 
    USB=CatchImage(#USB, ?USB)
    b=25
    c=1
    e=10
    d=20
    ResetList(DISK()) 
    For a=1 To ListSize(DISK())
      NextElement(DISK())
      lw.s=DISK()
      If GetDriveType_ (@Lw)=#DRIVE_REMOVABLE Or GetDriveType_ (@Lw)=#DRIVE_RAMDISK
        ButtonImageGadget(c,15,b,50,50,USB)
      Else  
        ButtonImageGadget(c,15,b,50,50,HDDD)
      EndIf  
      
      TextGadget(d,35,e,17,13,DISK(),#PB_Text_Center)
      SetGadgetColor(d,#PB_Gadget_BackColor,RGB(212, 251, 183))
      GetFreeSpace(DISK())
      AddElement(DISKZNACH())
      DISKZNACH()=bbb$
      AddElement(DISKZNACH())
      DISKZNACH()=aaa$
      TextGadget(d+10,73,e+25,55,13,bbb$,#PB_Text_Center)
      TextGadget(d+20,73,e+45,55,13,aaa$,#PB_Text_Center)
      SetGadgetColor(d+10,#PB_Gadget_BackColor,RGB(212, 251, 183))
      SetGadgetColor(d+20,#PB_Gadget_BackColor,RGB(212, 251, 183))
      b+75
      c+1
      e+75
      d+1
    Next
    ResetList(DISKCD())
    For a=1 To ListSize(DISKCD())
      ButtonImageGadget(c,15,b,50,50,CDDD)
      NextElement(DISKCD())
      TextGadget(d,35,e,17,13,DISKCD(),#PB_Text_Center)
      SetGadgetColor(d,#PB_Gadget_BackColor,RGB(212, 251, 183))
      VALCD(DISKCD())
      AddElement(DISKCDZNACH())
      DISKCDZNACH()=FullCD
      AddElement(DISKCDZNACH())
      DISKCDZNACH()=FReeCD
      TextGadget(d+10,73,e+25,55,13,Str(FullCD)+" МБ",#PB_Text_Center)
      TextGadget(d+20,73,e+45,55,13,Str(FReeCD)+" МБ",#PB_Text_Center)
      SetGadgetColor(d+10,#PB_Gadget_BackColor,RGB(212, 251, 183))
      SetGadgetColor(d+20,#PB_Gadget_BackColor,RGB(212, 251, 183))
      b+75
      c+1
      e+75
      d+1
    Next
    ButtonImageGadget(c,15,b+5,50,50,FOLDERR)
    TextGadget(d,15,e+5,110,13,"МОИ ДОКУМЕНТЫ",#PB_Text_Center)
    SetGadgetColor(d,#PB_Gadget_BackColor,RGB(212, 251, 183))
  EndIf
EndProcedure
Procedure SBROS()
  KillTimer_(WindowID(#Window_0), 1)
  CloseWindow(#Window_0)
  ClearList(DISK())
  ClearList(DISKCD())
  ClearList(DISKZNACH())
  ClearList(DISKCDZNACH())
  
  VKL=0
  KOLA=0
  KOLA=Valuedisk()
  OpenWindow_Window_0(KOLA)
  SetTimer_(WindowID(#Window_0), 1, 10, @PROV() )
EndProcedure
Procedure PROV1()
  If ValuediskREZ()<>KOLA
    SBROS()
    ProcedureReturn 
  EndIf
  ResetList(DISK())    
  ResetList(DISKZNACH())   
  For a=1 To ListSize(DISK())
    NextElement(DISK())
    NextElement(DISKZNACH())
    GetFreeSpace(DISK())
    If bbb$<>DISKZNACH()
      SBROS()
      ProcedureReturn
    EndIf
    NextElement(DISKZNACH())
    If aaa$<>DISKZNACH()
      SBROS()
      ProcedureReturn
    EndIf
  Next
  ResetList(DISKCD())
  ResetList(DISKCDZNACH())
  For a=1 To ListSize(DISKCD())
    NextElement(DISKCD())
    NextElement(DISKCDZNACH())
    VALCD(DISKCD())
    If FullCD<>DISKCDZNACH()
      SBROS()
      ProcedureReturn
    EndIf
    NextElement(DISKCDZNACH())
    If FReeCD<>DISKCDZNACH()
      SBROS()
      ProcedureReturn
    EndIf
  Next
EndProcedure
Procedure PROV()
  If VKL=0
    If DesktopMouseX()>DesktopWidth(0)-5 And DesktopMouseY()<WindowHeight(#Window_0) And DesktopMouseY()>25
      PROV1()
      ResizeWindow(#Window_0, WindowX(#Window_0)-140 , #PB_Ignore, #PB_Ignore, #PB_Ignore) 
      VKL=1
    EndIf
  EndIf
  If VKL=1
    If DesktopMouseX()<DesktopWidth(0)-200 Or DesktopMouseY()>WindowHeight(#Window_0)+50
      ResizeWindow(#Window_0, WindowX(#Window_0)+140 , #PB_Ignore, #PB_Ignore, #PB_Ignore) 
      VKL=0
    EndIf
  EndIf
EndProcedure

KOLA=Valuedisk()
OpenWindow_Window_0(KOLA)
SetTimer_(WindowID(#Window_0), 1, 10, @PROV() )
Repeat
  Event = WaitWindowEvent()
  Select Event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1 To ListSize(DISK())
          SelectElement(DISK(),GetActiveGadget()-1)
          RunProgram(DISK())
        Case ListSize(DISK()) To ListSize(DISK())+ListSize(DISKCD())
          SelectElement(DISKCD(),GetActiveGadget()-ListSize(DISK())-1)
          RunProgram(DISKCD())
        Case ListSize(DISK())+ListSize(DISKCD())+1
          RunProgram(GetHomeDirectory()+"Documents")
      EndSelect
      ;     Case #WM_RBUTTONDOWN
      ;       If DesktopMouseY()>250 And DesktopMouseY()<300
      ;         DisplayPopupMenu(1, WindowID(#Window_0))
      ;       EndIf
      ;     Case #PB_Event_Menu
      ;       Select EventMenu()
      ;         Case 1
      ;           put.s=OpenFileRequester("","","Файлы образов|*.bwt;*.b5t;*.b6t;*.ccd;*.cdi;*.pdi;*.iso;*.isz;*.mds;*.mdx;*.nrg;*.cue",0)
      ;           If put
      ;             RunProgram("C:\Program Files\Alcohol Soft\Alcohol 52\AxCmd.exe ", "F: /M:"+put,"")
      ;           EndIf
      ;         Case 2  
      ;           RunProgram("C:\Program Files\Alcohol Soft\Alcohol 52\AxCmd.exe ", "F: /U","")
      ;       EndSelect
  EndSelect 
ForEver

0

2

Добавил горячую клавишу F11  для запирания панели за областью экрана.

Код:
Enumeration
  #Window_0
  #HDD
  #CD
  #USB
  #FOLDER
EndEnumeration

Structure HiLow 
  lowlow.w 
  lowhi.w 
  hilow.w 
  hihi.w 
EndStructure 

Global NewList DISK.s()
Global NewList DISKCD.s()
Global NewList DISKZNACH.s()
Global NewList DISKCDZNACH.l()
Global aaa$
Global bbb$
Global FReeCD
Global FullCD
Global VKL
Global KOLA
Global HOTK

DataSection
  HDD:
  IncludeBinary "HDD1.png"
  CD:
  IncludeBinary "CDR.png"
  USB:
  IncludeBinary "USB.png"
  FOLDER:
  IncludeBinary "folder.png"
EndDataSection

UsePNGImageDecoder()
ExamineDesktops()
Declare PROV()



Procedure Hot_KeysInit()
   Structure hotkeysinfo
      Id.l
      vk.l
      func.l
      name.s
      window.l
   EndStructure
   Global Dim hotkeys.hotkeysinfo(1000)
   Global HotKeysInitDone
   HotKeysInitDone=1
EndProcedure

Procedure Hot_KeyAdd(Window, vk, function, Name.s, shiftstate, altstate, controlstate)
   Result=0
   If vk And function And Name And Window And HotKeysInitDone
      idtouse=-1
      For x=0 To 1000
         If hotkeys(x) \Name=""
            hotkeys(x) \Name=Name
            hotkeys(x) \vk=vk
            hotkeys(x) \func=function
            hotkeys(x) \Id=x
            hotkeys(x) \Window=Window
            idtouse=x
            Break
         EndIf
      Next x
      
      mods=0
      If shiftstate=1
         mods=mods | #MOD_SHIFT
      EndIf
      If altstate=1
         mods=mods | #MOD_ALT
      EndIf
      If controlstate=1
         mods=mods | #MOD_CONTROL
      EndIf
      
      If idtouse>-1
         If RegisterHotKey_(Window, idtouse, mods, vk)=0
         Else
            Result=1
         EndIf
      Else
         Result=$DEAD
      EndIf
      
   Else
      Result=$DEADBEEF
   EndIf;check needed vars
   ProcedureReturn Result
EndProcedure

Procedure Hotkey_WaitWindowEvent()
   message=WaitWindowEvent()
   result=message
   If HotKeysInitDone
      If message=#WM_HOTKEY
         wparam=EventwParam()
         SELECTOR=wparam
         If hotkeys(wparam) \name>""
            CallFunctionFast(hotkeys(wparam) \func)
            result=Hotkey_WaitWindowEvent()
         EndIf
      EndIf
   EndIf;initdone
   ProcedureReturn result
EndProcedure


Procedure.s GetFreeSpace(p$) 
  #div=10 
  #mask=(1<<#div)-1 
  #mul=16-#div 
  If Left(p$,2)="\\" 
    a=FindString(p$,"\",3) 
  Else 
    a=FindString(p$,"\",1) 
  EndIf 
  If a=0 : a=Len(p$) : EndIf 
  p$=Left(p$,a) 
  If GetDiskFreeSpaceEx_(@p$,@free.HiLow,@Total.HiLow,@TotalFree.HiLow) 
    hilow=Free\hilow&$ffff 
    hihi=Free\hihi&$ffff 
    lowlow=Free\lowlow&$ffff 
    lowhi=Free\lowhi&$ffff 
    hilow1=Total\hilow&$ffff 
    hihi1=Total\hihi&$ffff 
    lowlow1=Total\lowlow&$ffff 
    lowhi1=Total\lowhi&$ffff
    p=1 
    While hihi>0 Or hilow>0 Or lowhi>0 
      
      
      lowlow=(lowlow>>#div)+((lowhi & #mask)<<#mul) 
      lowhi =(lowhi >>#div)+((hilow & #mask)<<#mul) 
      hilow =(hilow >>#div)+((hihi & #mask)<<#mul) 
      hihi  =(hihi>>#div) 
      
      p+1 
    Wend
    g=1
    While hihi1>0 Or hilow1>0 Or lowhi1>0 
      
      
      lowlow1=(lowlow1>>#div)+((lowhi1 & #mask)<<#mul) 
      lowhi1 =(lowhi1 >>#div)+((hilow1 & #mask)<<#mul) 
      hilow1 =(hilow1 >>#div)+((hihi1 & #mask)<<#mul) 
      hihi1  =(hihi1>>#div) 
      
      g+1 
    Wend 
    If lowlow1>1024 
      bbb$= StrF(lowlow1/1024,2)+" "+StringField("Byte,KB,MB,GB,TB",g+1,",") 
      
    Else 
      bbb$= StrF(lowlow1,2)+" "+StringField("Byte,KB,MB,GB,TB",g,",") 
    EndIf 
    
    If lowlow>1024 
      aaa$= StrF(lowlow/1024,2)+" "+StringField("Byte,KB,MB,GB,TB",p+1,",") 
      
    Else 
      aaa$= StrF(lowlow,2)+" "+StringField("Byte,KB,MB,GB,TB",p,",") 
    EndIf 
  Else 
    aaa$="---" 
  EndIf 
EndProcedure 

Procedure VALCD(cdr.s)
  SectorsPerCluster.q : BytesPerSector.q : NumberOfFreeClusters.q 
  SetErrorMode_(#SEM_FAILCRITICALERRORS) 
  GetDiskFreeSpaceEx_(cdr.s,@SectorsPerCluster,@BytesPerSector,@NumberOfFreeClusters)
  FReeCD=(NumberOfFreeClusters)/1048576
  FullCD=(BytesPerSector)/1048576
EndProcedure

Procedure Valuedisk()
  bufflen = $FF 
  *memid = AllocateMemory(bufflen) 
  
  bufflen = GetLogicalDriveStrings_(bufflen,*memid) 
  
  i = 0 
  While i < bufflen 
    Lw.s = PeekS(*memid+i) 
    i + 4 
    LwT = GetDriveType_ (@Lw)
    If Lw<>"A:\"
      KOLA+1
      If LwT = #DRIVE_CDROM
        
        AddElement(DISKCD())
        DISKCD()=Lw
      ElseIf LwT = #DRIVE_FIXED Or LwT =#DRIVE_REMOVABLE Or LwT =#DRIVE_RAMDISK
        AddElement(DISK())
        DISK()=Lw   
      EndIf 
    EndIf
  Wend     
  FreeMemory(*memid)
  ProcedureReturn KOLA
EndProcedure
Procedure ValuediskREZ()
  bufflen = $FF 
  *memid = AllocateMemory(bufflen) 
  
  bufflen = GetLogicalDriveStrings_(bufflen,*memid) 
  
  i = 0 
  While i < bufflen 
    Lw.s = PeekS(*memid+i) 
    i + 4 
    LwT = GetDriveType_ (@Lw)
    If Lw<>"A:\"
      KOL+1
    EndIf
  Wend      
  FreeMemory(*memid)
  ProcedureReturn KOL
EndProcedure

Procedure OpenWindow_Window_0(KOLA)
  If OpenWindow(#Window_0, DesktopWidth(0), 0, 140, KOLA*75+100, "Window_0", #PB_Window_BorderLess)
    MakeToolWindow( WindowID(#Window_0), #True )
    StickyWindow(#Window_0, 1) 
    SetWindowColor(#Window_0, RGB(212, 251, 183)) 
;     If CreatePopupImageMenu(1)
;       MenuItem(1, "Смонтировать образ")
;       MenuItem(2,"Демонтировать образ")
;     EndIf
    HDDD=CatchImage(#HDD, ?HDD)
    CDDD=CatchImage(#CD, ?CD)
    FOLDERR=CatchImage(#FOLDER, ?FOLDER) 
    USB=CatchImage(#USB, ?USB)
    b=25
    c=1
    e=10
    d=20
    ResetList(DISK()) 
    For a=1 To ListSize(DISK())
      NextElement(DISK())
      lw.s=DISK()
      If GetDriveType_ (@Lw)=#DRIVE_REMOVABLE Or GetDriveType_ (@Lw)=#DRIVE_RAMDISK
        ButtonImageGadget(c,15,b,50,50,USB)
      Else  
        ButtonImageGadget(c,15,b,50,50,HDDD)
      EndIf  
      
      TextGadget(d,35,e,17,13,DISK(),#PB_Text_Center)
      SetGadgetColor(d,#PB_Gadget_BackColor,RGB(212, 251, 183))
      GetFreeSpace(DISK())
      AddElement(DISKZNACH())
      DISKZNACH()=bbb$
      AddElement(DISKZNACH())
      DISKZNACH()=aaa$
      TextGadget(d+10,73,e+25,55,13,bbb$,#PB_Text_Center)
      TextGadget(d+20,73,e+45,55,13,aaa$,#PB_Text_Center)
      SetGadgetColor(d+10,#PB_Gadget_BackColor,RGB(212, 251, 183))
      SetGadgetColor(d+20,#PB_Gadget_BackColor,RGB(212, 251, 183))
      b+75
      c+1
      e+75
      d+1
    Next
    ResetList(DISKCD())
    For a=1 To ListSize(DISKCD())
      ButtonImageGadget(c,15,b,50,50,CDDD)
      NextElement(DISKCD())
      TextGadget(d,35,e,17,13,DISKCD(),#PB_Text_Center)
      SetGadgetColor(d,#PB_Gadget_BackColor,RGB(212, 251, 183))
      VALCD(DISKCD())
      AddElement(DISKCDZNACH())
      DISKCDZNACH()=FullCD
      AddElement(DISKCDZNACH())
      DISKCDZNACH()=FReeCD
      TextGadget(d+10,73,e+25,55,13,Str(FullCD)+" МБ",#PB_Text_Center)
      TextGadget(d+20,73,e+45,55,13,Str(FReeCD)+" МБ",#PB_Text_Center)
      SetGadgetColor(d+10,#PB_Gadget_BackColor,RGB(212, 251, 183))
      SetGadgetColor(d+20,#PB_Gadget_BackColor,RGB(212, 251, 183))
      b+75
      c+1
      e+75
      d+1
    Next
    ButtonImageGadget(c,15,b+5,50,50,FOLDERR)
    TextGadget(d,15,e+5,110,13,"МОИ ДОКУМЕНТЫ",#PB_Text_Center)
    SetGadgetColor(d,#PB_Gadget_BackColor,RGB(212, 251, 183))
  EndIf
EndProcedure
Procedure SBROS()
  KillTimer_(WindowID(#Window_0), 1)
  CloseWindow(#Window_0)
  ClearList(DISK())
  ClearList(DISKCD())
  ClearList(DISKZNACH())
  ClearList(DISKCDZNACH())
  
  VKL=0
  KOLA=0
  KOLA=Valuedisk()
  OpenWindow_Window_0(KOLA)
  SetTimer_(WindowID(#Window_0), 1, 10, @PROV() )
EndProcedure
Procedure PROV1()
  If ValuediskREZ()<>KOLA
    SBROS()
    ProcedureReturn 
  EndIf
  ResetList(DISK())    
  ResetList(DISKZNACH())   
  For a=1 To ListSize(DISK())
    NextElement(DISK())
    NextElement(DISKZNACH())
    GetFreeSpace(DISK())
    If bbb$<>DISKZNACH()
      SBROS()
      ProcedureReturn
    EndIf
    NextElement(DISKZNACH())
    If aaa$<>DISKZNACH()
      SBROS()
      ProcedureReturn
    EndIf
  Next
  ResetList(DISKCD())
  ResetList(DISKCDZNACH())
  For a=1 To ListSize(DISKCD())
    NextElement(DISKCD())
    NextElement(DISKCDZNACH())
    VALCD(DISKCD())
    If FullCD<>DISKCDZNACH()
      SBROS()
      ProcedureReturn
    EndIf
    NextElement(DISKCDZNACH())
    If FReeCD<>DISKCDZNACH()
      SBROS()
      ProcedureReturn
    EndIf
  Next
EndProcedure
Procedure PROV()
  If HOTK=0
    If VKL=0
      If DesktopMouseX()>DesktopWidth(0)-5 And DesktopMouseY()<WindowHeight(#Window_0) And DesktopMouseY()>25
        PROV1()
        ResizeWindow(#Window_0, WindowX(#Window_0)-140 , #PB_Ignore, #PB_Ignore, #PB_Ignore) 
        VKL=1
      EndIf
    EndIf
    If VKL=1
      If DesktopMouseX()<DesktopWidth(0)-200 Or DesktopMouseY()>WindowHeight(#Window_0)+50
        ResizeWindow(#Window_0, WindowX(#Window_0)+140 , #PB_Ignore, #PB_Ignore, #PB_Ignore) 
        VKL=0
      EndIf
    EndIf
  EndIf
EndProcedure
Procedure hotkey()
  HOTK=HOTK!1
  EndProcedure

KOLA=Valuedisk()
OpenWindow_Window_0(KOLA)
SetTimer_(WindowID(#Window_0), 1, 10, @PROV() )
Hot_KeysInit()
Hot_KeyAdd(WindowID(#Window_0), #VK_F11, @hotkey(), "test", 0,0,0)
Repeat
  Event = Hotkey_WaitWindowEvent()
  Select Event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1 To ListSize(DISK())
          SelectElement(DISK(),GetActiveGadget()-1)
          RunProgram(DISK())
        Case ListSize(DISK()) To ListSize(DISK())+ListSize(DISKCD())
          SelectElement(DISKCD(),GetActiveGadget()-ListSize(DISK())-1)
          RunProgram(DISKCD())
        Case ListSize(DISK())+ListSize(DISKCD())+1
          RunProgram(GetHomeDirectory()+"Documents")
      EndSelect
;     Case #WM_RBUTTONDOWN
;       If DesktopMouseY()>250 And DesktopMouseY()<300
;         DisplayPopupMenu(1, WindowID(#Window_0))
;       EndIf
;     Case #PB_Event_Menu
;       Select EventMenu()
;         Case 1
;           put.s=OpenFileRequester("","","Файлы образов|*.bwt;*.b5t;*.b6t;*.ccd;*.cdi;*.pdi;*.iso;*.isz;*.mds;*.mdx;*.nrg;*.cue",0)
;           If put
;             RunProgram("C:\Program Files\Alcohol Soft\Alcohol 52\AxCmd.exe ", "F: /M:"+put,"")
;           EndIf
;         Case 2  
;           RunProgram("C:\Program Files\Alcohol Soft\Alcohol 52\AxCmd.exe ", "F: /U","")
;       EndSelect
  EndSelect 
ForEver

0

3

А почему для Windows 7, у меня работает и на XP
только при старте в не зависимости от наличия или отсутствия
диска в дисководе выскакивает системная ошибка, закрываю и дальше работает нормально.

и название папки Мои документы у меня на русском языке, тоже выдает ошибку- ищет на буржуйском...
не отображается емкость диска С

А так вполне удобно, я пользуюсь схожей панелью с Mac OS - только на ней ярлыки с рабочего стола...

Отредактировано mirashic (04.09.2010 21:22:03)

0

4

mirashic написал(а):

А почему для Windows 7, у меня работает и на XP

Для Xp ничего программить не надо, там такая панель в 2 клика ставится. Олег у тебя вроде семерка стоит, проверь работу пожалуйста на ней, нет ли глюков.

0

5

haav написал(а):

там такая панель в 2 клика ставится

я не знаю как...
сейчас перейду на 7 - скажу...

0

6

mirashic написал(а):

я не знаю как...

Меню пуск, мой компьютер перетащи к самому краю экрана.

0

7

Это встроенные карт рейдеры, пока не закрою четыре сообщения, не работает
и отказ в доступе к моим документам , путь правильный  (вроде поставил во всех настройках разрешить...это в системе)

http://mirashic.narod.ru/20_36_25.png

показывает только остаток емкости системного диска
.....
с моими документами разобрался

Отредактировано mirashic (04.09.2010 21:52:59)

0

8

mirashic написал(а):

Это встроенные карт рейдеры

У меня их нет, трудно будет устранить, все таки это наверно в процедуре GetFreeSpace(p$)
более того думаю на айпишку GetDiskFreeSpaceEx_

0

9

mirashic написал(а):

показывает только остаток емкости системного диска

Это наверно что то из-за разрешений в системе... хотя хрен знает

0

10

после закрытия окон с ошибкой и карт рейдеры и флешки открываются и показывают ёмкость правильно...

с документами разобрался...

Отредактировано mirashic (04.09.2010 21:59:55)

0

11

mirashic написал(а):

после закрытия окон с ошибкой и карт рейдеры и флешки открываются и показывают ёмкость правильно...

Надо дебажить процедуру GetFreeSpace(p$) , но без устройств карт-рейдер....  :(

0

12

Олег попробуй воткнуть эту строку перед строкой If GetDiskFreeSpaceEx_(@p$,@free.HiLow,@Total.HiLow,@TotalFree.HiLow) :
SetErrorMode_(#SEM_FAILCRITICALERRORS)

Отредактировано haav (04.09.2010 22:04:31)

0

13

Помогло...

0

14

mirashic написал(а):

Меню пуск, мой компьютер перетащи к самому краю экрана.

всё равно она не такая, она идет по высоте всего экрана и её вроде нельзя ограничить с верху и с низу...
и внешний вид теперь можно подогнать под себя...

0

15

mirashic написал(а):

всё равно она не такая, она идет по высоте всего экрана и её вроде нельзя ограничить с верху и с низу...и внешний вид теперь можно подогнать под себя...

В хрюше меня она устраивала....Как на 7 перебрался, лишился ее, искал в инете разрешение проблемы, не нашел, вот выбрал время для реализации... Более того всегда можно, свои добавить по желанию, при чем с настройками как полагается...  За тестирование спасибо!

Отредактировано haav (04.09.2010 22:29:41)

0

16

Надо запрет на повторный запуск поставить, заглянул диспечер, а там 5 штук запущенных, а на экране это не как не отображается...

0

17

mirashic написал(а):

Надо запрет на повторный запуск поставить, заглянул диспечер, а там 5 штук запущенных, а на экране это не как не отображается...

Дело хозяйское... У меня она в автозагрузке стоит, мне ее по десять раз включать не требуется. А с панели специально убрал, да и exit не делал тоже умышленно, хотя клавишу(сочетание клавиш) можно по желанию добавить для отключения...

0


Вы здесь » PureBasic - форум » OpenSource » Панель для Windows 7