Êîìïüþòåðíûé ôîðóì OSzone.net  

Êîìïüþòåðíûé ôîðóì OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   ˸ãêîå ïðèëîæåíèå äëÿ ìîíòèðîâàíèÿ ëîãè÷åñêèõ ðàçäåëîâ HDD. (http://forum.oszone.net/showthread.php?t=184698)

semiono 05-09-2010 18:17 1489056

˸ãêîå ïðèëîæåíèå äëÿ ìîíòèðîâàíèÿ ëîãè÷åñêèõ ðàçäåëîâ HDD.
 
Ìíå íóæåí GUI èíòåðôåéñ, ïðèìåðíî 640x480, äëÿ áûñòðîãî ïîäêëþ÷åíèÿ/îòêëþ÷åíèÿ íóæíûõ ðàçäåëîâ ëîãè÷åñêèõ äèñêîâ.
Ïî÷åìó õî÷åòñÿ èìåòü ñàìîäåëüíûé "ìåíåäæåð", íó ïîòîìó-÷òî ñ îäíîé ñòîðîíû ÷òîáû íè÷åãî ëèøíåãî íå áûëî,
è â òî æå âðåìÿ ìîæåò ÷òî-òî ïîëåçíîå ìîæíî ïðèäóìàòü. msc- êîíñîëè ðàçäðàæàþò ñâîèìè ñàéä-ïàíåëÿìè, âñÿêèìè òàáàìè íåíóæíûìè.
Ïðîãðàììû äëÿ hdd ìîãóò ýòî äåëàòü, íî ãðóçÿòñÿ äîëüøå òàê êàê ïðåäíàçíà÷åíû äëÿ áîëåå ñåðü¸çíûõ çàäà÷.

Îäíàêî ÿ íå çíàþ êàê ìîíòèðîâàòü äèñêè? Èç windows çíàêîìî ëèøü mountvol.exe. Åñëè íåòó äðóãèõ âîçìîæíîñòåé, òî ýòî ïîëó÷èòüñÿ
ãðàôè÷åñêàÿ îáîëî÷êà äëÿ mountvol.exe. Ïðîãà âäîáàâîê ê äèñêàì îáðàùàåòñÿ êàê CLSID èìåíàì, ñ ýòèì òîæå íå î÷åíü ïîíÿòíî êàê îïðåäåëèòüñÿ.
Åù¸ çíàþ ÷òî âñ¸ ýòî ïèøåòñÿ â ðååñòð â ðàçäåë HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices, íî ïîäðîáíåå ÿ òîæå íå çíàþ.

Äëÿ íà÷àëà, ÿ áû õîòåë òîëüêî èìåòü îêíî ãäå ãàëî÷êàìè ìîæíî áûëî áû îòêëþ÷èòü(çàïðåòèòü), à ïîòîì âêëþ÷èòü ïî âûáîðó ëîãè÷åñêèå äèñêè.
Ñóäÿ ïî âñåìó ïðîãà(autoit) äîëæíà ñ÷èòàòü ñíà÷àëà âñå ìîè ðàçäåëû è âûâåñòè ìíå èõ â îêíå...
?

speechless 10-09-2010 00:00 1492160

Âëîæåíèé: 1
  • MoDev.rar (231.60 KB, ñêà÷èâàíèé: 34)
êàê òî äàâíî äåëàë äëÿ ñåáÿ, ïîñìîòðè
Êîä:

#include <GUIConstants.au3>
GUICreate("MoDev",400,130)  ; will create a dialog box that when displayed is centered
GUISetState (@SW_SHOW)      ; will display an empty dialog box

$regEnumVal = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\RZ\MoDev", 1) ;÷èòàåì ïåðâîå çíà÷åíèå èç ðååñòðà
if @error <> 0 then $regEnumVal="#"
GUICtrlCreateLabel ("Äèñê",  10, 17, 30)   
GUICtrlCreateLabel ("Âûáîð èêîíêè",  20, 90, 40,30)   
GUICtrlCreateLabel ("Ñìîíòèðîâàòü",  90, 17, 75)
GUICtrlCreateLabel ("Îòìîíòèðîâàòü",  87, 45, 80)
GUICtrlCreateLabel ("Ïîèñê äèñêîâ",  90, 75, 75)
GUICtrlCreateGroup ("Áîíóñ", 12, 33, 53, 90)
GUICtrlCreateLabel ( "MoDev ïàðàçèòèðóåò íà ñòàíäàðòíîé âèíäîçíîé óòèëèòå ""mountvol"" äëÿ ìîíòèðîâàíèÿ/äåìîíòèðîâàíèÿ ðàçäåëîâ äèñêà áåç ïåðåçàãðóçêè ÂÍÈÌÀÍÈÅ: ïðè èçìåíåíèè ðàçìåðîâ ðàçäåëîâ ïîâòîðèòå ïîèñê äèñêîâ", 210,10, 180, 110)
$combo=GUICtrlCreateCombo ($regEnumVal, 45,10,35) ; ñîçäàåì combo
ControlDisable("", "#", $combo) ;äåëàåì ñåðûì combo
For $i = 1 to 100
$regEnumVal = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\RZ\MoDev", $i) ;÷èòàåì â öèêëå ðååñòð
if @error <> 0 Then ExitLoop
GUICtrlSetData($combo,$regEnumVal) ; äîáàâëÿåì â combo áóêâû fixed äèñêîâ
next
$deMount=GUICtrlCreateButton ("Äåìîíòèðîâàòü",  170, 40, 25,23,$BS_ICON) ;êíîïêà äåìîíòèðîâàòü
GUICtrlSetImage ($deMount,"shell32.dll",131,0)
$mount=GUICtrlCreateButton ("Ìîíò",  170, 10, 25,23,$BS_ICON) ;êíîïêà ìîíòèðîâàòü
GUICtrlSetImage ($mount,"shell32.dll",112,0)
$search=GUICtrlCreateButton ("Ïîèñê äèñêîâ",  170, 70, 25,23,$BS_ICON) ;êíîïêà ïîèñêà
GUICtrlSetImage ($search,"shell32.dll",22,0)
$ico=GUICtrlCreateButton ("Èêîíêè",  20, 50, 37,35,$BS_ICON) ;êíîïêà âûáîðà èêîíêè
If GUICtrlRead($combo)="#" then ControlDisable("", "", $ico) ;åñëè äèñêîâ íåò êíîïêà $ico íåàêòèâíà
$str = StringLeft(GUICtrlRead($combo), 1) ;áåðåì òîëüêî áóêâó
$r=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\"&$str&"\DefaultIcon", "") ;÷èòàåì ïóòü ê èêîíêå
GUICtrlSetImage ($ico,"shell32.dll",8) ;ïîêàç èêîíêè íà êíîïêå ïî óìîë÷àíèþ
GUICtrlSetImage ($ico,$r,0) ;ïîêàç èêîíêè íà êíîïêå

; Run the GUI until the dialog is closed
While 1
    $msg = GUIGetMsg()
  Select
          Case $msg=$deMount
                $system = StringLeft(@WindowsDir, 2)
                        If GUICtrlRead($combo)=$system then
                          MsgBox(8192,"Warning", "Îñòîðîæíî !!! Âû âûáðàëè ñèñòåìíûé äèñê")
                        EndIf
                $deMountMsg=msgbox(8212,"Demounted", "Äåìîíòèðîâàòü äèñê "&GUICtrlRead($combo)&"  Óâåðåí?")
                        If $deMountMsg=6 then ;åñëè Äà òî
                          Run("mountvol.exe"&" "&GUICtrlRead($combo)&" /D") ;äåìîíòèðóåì âûáðàííûé ðàçäåë
                        EndIf
          Case $msg=$mount
            $MountMsg=msgbox(8260,"Mounted", "Ñìîíòèðîâàòü äèñê "&GUICtrlRead($combo)) 
                        ;msgbox(8260,"Mounted", $MountMsg) 
                          If $MountMsg=6 then ;åñëè Äà òî
                                  $point = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\RZ\MoDev", GUICtrlRead($combo)) ;÷èòàåì òî÷êó ìîíòèðîâàíèÿ
                                  ;msgbox(8260,"Mounted", $point)
                                  $point=StringReplace( $point, "\??\Volume", "\\?\Volume") ;ìåíÿåì ñòðîêó äëÿ mountvol
                                  ;msgbox(8260,"Mounted", $point)
                                  Run("mountvol.exe"&" "&GUICtrlRead($combo)&" "&$point) ;ìîíòèðóåì âûáðàííûé ðàçäåë
                                EndIf 
          Case $msg=$combo ;ïðè âûáîðå äèñêà
                        $str = StringLeft(GUICtrlRead($combo), 1) ;áåðåì òîëüêî áóêâó
                        $r=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\"&$str&"\DefaultIcon", "") ;÷èòàåì ïóòü ê èêîíêå
                        GUICtrlSetImage ($ico,"shell32.dll",8) ;ïîêàç èêîíêè íà êíîïêå ïî óìîë÷àíèþ
                        GUICtrlSetImage ($ico,$r,0) ;ïîêàç èêîíêè íà êíîïêå
                        $system = StringLeft(@WindowsDir, 2)
                                If GUICtrlRead($combo)=$system then ;åñëè äèñê ñèñòåìíûé
                                  MsgBox(8192,"Warning", "Îñòîðîæíî !!! Âû âûáðàëè ñèñòåìíûé äèñê") ;ïîÿâëÿåòñÿ ïðåäóïðåæäåíèå
                                EndIf
          Case $msg=$search
                $fixedDrive = DriveGetDrive( "fixed" ) ;âñå fixed äèñêè
                        If NOT @error Then
                          ;MsgBox(4096,"", "Found " & $fixedDrive[0] & " drives")
                                  For $i = 1 to $fixedDrive[0] ;èùåì âñå ôèêñèðîâàííûå äèñêè
                                        ;MsgBox(4096,"Drive " & $i, $fixedDrive[$i])
                                        $key = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\" & $fixedDrive[$i]) ;èùåì âñå çíà÷åíèÿ ôèêñèðîâàííûõ äèñêîâ â ðååñòðå
                                        ;MsgBox(4096, "\DosDevices\" & $fixedDrive[$i], $key)
                                        For $ii = 1 to 100
                                                $a = RegEnumVal("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", $ii) ;ïðîñìîòð âåòâè MountedDevices
                                                  If @error <> 0 Then ExitLoop
                                                ;MsgBox(4096, "HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices" & $ii, $a)
                                                $result = StringInStr($a, "\??\Volume") ;ïðîâåðêà íà íàëè÷èå ñòðîê "\??\Volume"
                                                ;MsgBox(0, "Search result:", $result)
                                                        If $result = 1 Then                                                ;åñëè ñòðîêè "\??\Volume" åñòü
                                                                $v = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", $a)  ;òî ÷èòàåì çíà÷åíèÿ ýòèõ êëþ÷åé
                                                                ;MsgBox(4096, $a, $v)
                                                                        If $v = $key Then                                               
                                                                                ;MsgBox(4096, $fixedDrive[$i], $a) ;íàéäåííûå ñîîòâåòñòâèÿ áóêâû äèñêà è òî÷êè ìîíòèðîâàíèÿ
                                                                                                        ; Write a single REG_SZ value
                                                                                                        RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\RZ\MoDev", $fixedDrive[$i], "REG_SZ", $a) ;çàïèñü ðåçóëüòàòà â ðååñòð
                                                                        EndIf
                                                        EndIf
                                        next
                                  Next
                        EndIf
                GUICtrlDelete($combo) ;óäàëÿåì ñòàðîå combo
                $regEnumVal = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\RZ\MoDev", 1) ;÷èòàåì ïåðâîå çíà÷åíèå èç ðååñòðà
                $combo=GUICtrlCreateCombo ($regEnumVal, 45,10,35) ; ñîçäàåì combo
                        For $i = 1 to 100
                          $regEnumVal = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\RZ\MoDev", $i) ;÷èòàåì â öèêëå ðååñòð
                                  if @error <> 0 Then ExitLoop
                          GUICtrlSetData($combo,$regEnumVal) ; äîáàâëÿåì â combo áóêâû fixed äèñêîâ
                        next
                ControlEnable("", "", $ico) ;êíîïêà $ico àêòèâíà
                $str = StringLeft(GUICtrlRead($combo), 1) ;áåðåì òîëüêî áóêâó
                $r=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\"&$str&"\DefaultIcon", "") ;÷èòàåì ïóòü ê èêîíêå
                GUICtrlSetImage ($ico,"shell32.dll",8) ;ïîêàç èêîíêè íà êíîïêå ïî óìîë÷àíèþ
                GUICtrlSetImage ($ico,$r,0) ;ïîêàç èêîíêè íà êíîïêå
          Case $msg=$ico
                $str = StringLeft(GUICtrlRead($combo), 1) ;áåðåì òîëüêî áóêâó
                $icoPatch = FileOpenDialog("Âûáîð èêîíêè", "", "Icons (*.ico;*.dll;*.exe)", 1 ) ;îêíî âûáîðà ôàéëà
                        If $icoPatch<>"" then ;åñëè ïóòü íå ïóñòîé
                          RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\"&$str&"\DefaultIcon", "", "REG_SZ", $icoPatch) ;çàïèñü â ðååñòð ïóòè ê èêîíêå
                          GUICtrlSetImage ($ico,"shell32.dll",8) ;ïîêàç èêîíêè íà êíîïêå ïî óìîë÷àíèþ
                          GUICtrlSetImage ($ico,$icoPatch,0) ;ïîêàç èêîíêè íà êíîïêå
                        EndIf
  EndSelect
  If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend

âåðñèþ íå ïîìíþ, íà âñÿêèé ñëó÷àé ïðèêðåïëÿþ exe

semiono 13-09-2010 02:22 1494100

Î÷åíü õîðîøî! Íî ñòðàííàÿ øòóêà, ó ìåíÿ SciTE íàãëóõî ïîâèñàåò ïðè îòêðûòèè ñêðèïòà, ñ ÷åãî áû ýòî?
Ìîæåò èç-çà êèðèëèöû, õîòÿ ÿ íå çíàþ òàì âðîäå ýòî äîëæíî èòàê áûòü?
Ïîïðîáóþ ðàçíûå êóñêè êîäà ïîâûòèðàòü, ÷òîá óòî÷íèòü ýòî.
(Ðåäàêòîð ó ìåíÿ íàâîðî÷åííûé, âìåñòå ñ Wrapper âåðñèÿ)

saavaage 13-09-2010 03:57 1494111

semiono, ó ìåíÿ âñå ÎÊ. Ïîñìîòðèòå íà òî, âñå ëè ôóíêöèè ó Âàñ åñòü â øàïêå ñêðèïòà. Ñïèñîê ó ìåíÿ:
Êîä:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>


semiono 16-09-2010 22:30 1497193

Ïîäïðàâòå êîä ïîæàëóéñòà? Èäåÿ òàêîâà, ÷òîáû âîîáùå èñêëþ÷èòü ñèñòåìíûé äèñê èç GUICtrlCreateCombo,
åñëè ýòî âîîáùå âîçìîæíî, òàê êàê ýòî áûëî áû áîëåå ëîãè÷íî, ÷åì âûâîä "Warning !!!".
Ìíå óòèëèòà î÷åíü ïîíðàâèëàñü, ïîýòîìó õî÷åòñÿ å¸ óëó÷øèòü.
Åù¸ áûëî áû õîðîøî ìåòêó äèñêà âûâåñòè â çàãîëîâîê îêíà, õîòÿ òîæå íàäî äóìàòü êàê çàïîëó÷èòü ïåðåìåííóþ $label ?
Ìîæåò áûòü îáðàáîòêîé cmd.exe /c vol ?

 èñõîäíèêå áûëî ïðîïóùåíî <ButtonConstants.au3>

È åù¸ ïðîñüáà, ìîæíî ëè êàê-òî ñ÷èòàòü ñåðèéíûé íîìåð ïàðòèøíà, è æåëàòåëüíî âûâåñòè â Edit() äëÿ âîçìîæíîñòè ðåäàêòèðîâàíèÿ â îêíå. Êàê áû áîíóñ :) ???

semiono 17-09-2010 00:26 1497276

17 ñòðîêà...
Êîä:

...
$regEnumVal = StringRegExpReplace(RegEnumVal("HKLM\Software\Node", $i) , "[^" & StringLeft(@WindowsDir, 2) & "]", "");÷èòàåì â öèêëå ðååñòð
...

Ïûòàþñü èñêëþ÷èòü áóêâó ñèñòåìíîãî äèñêà èç ñïèñêà, íå ïîëó÷àåòñÿ. :)

madmasles 17-09-2010 01:36 1497312

semiono,
Ïîïðîáóéòå òàê:
Êîä:

$combo = GUICtrlCreateCombo('', 45, 10, 35) ; ñîçäàåì combo
;...
$regEnumVal = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\RZ\MoDev", $i) ;÷èòàåì â öèêëå ðååñòð
If @error <> 0 Then ExitLoop
If $regEnumVal <> StringLower(@HomeDrive) Then
    GUICtrlSetData($combo, $regEnumVal, $regEnumVal) ; äîáàâëÿåì â combo áóêâû fixed äèñêîâ
EndIf
;...


semiono 17-09-2010 02:18 1497331

Êàê ÿ ïîíÿë StringLower(@HomeDrive) ýòî èìåííî òî ÷òî íàäî, õîòÿ ÿ îïÿòü çàïóòàëñÿ â êîäå, ñëèøêîì ìíîãî äëÿ ìåíÿ. ))


Âðåìÿ: 17:03.

Âðåìÿ: 17:03.
© OSzone.net 2001-