BlazeLondon Posted March 1, 2006 Share Posted March 1, 2006 interesting filegetfolder allows me to get a folder by browsing but is there a simple way of doing a "drivegetfolder" to select the current drives on the system? so it just shows a pulldown menu perhaps with A -> F or whatever the user has. Or do I have to make it myself by getting the current driveinfo and using a list ? Link to comment Share on other sites More sharing options...
GaryFrost Posted March 1, 2006 Share Posted March 1, 2006 interestingfilegetfolder allows me to get a folder by browsing but is there a simple way of doing a "drivegetfolder" to select the current drives on the system?so it just shows a pulldown menu perhaps with A -> F or whatever the user has.Or do I have to make it myself by getting the current driveinfo and using a list ? Use DriveGetDrive and make a List or ComboBox etc.... SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
BlazeLondon Posted March 1, 2006 Author Share Posted March 1, 2006 Use DriveGetDrive and make a List or ComboBox etc.... Thought so This works just fine for anyone else who may need something similar #include <GuiConstants.au3> #include <GuiCombo.au3> ;Opt('MustDeclareVars',1) Dim $Combo GuiCreate("Select Drive", 392, 254) $Combo = GuiCtrlCreateCombo("", 70, 10, 270, 21) GuiSetState() $var = DriveGetDrive( "all" ) If NOT @error Then For $i = 1 to $var[0] GUICtrlSetData($Combo,$var[$i]) ; MsgBox(4096,"Drive " & $i, $var[$i]) Next EndIf while 1 wend Link to comment Share on other sites More sharing options...
GaryFrost Posted March 1, 2006 Share Posted March 1, 2006 if your using beta here's something else you might want to look at expandcollapse popup#include <GUIConstants.au3> #include <GuiList.au3> Opt ('MustDeclareVars', 1) Dim $a_check[9], $msg, $ret, $s_attr Dim $input, $group, $a_attr, $listbox, $button GUICreate("ListBox Drive Demo", 400, 250, -1, -1) GUICtrlCreateLabel("Enter files to find", 25, 15) $input = GUICtrlCreateInput("", 125, 10, 180, 25) $group = GUICtrlCreateGroup("Atrributes", 10, 40, -1, 180) $a_attr = StringSplit("A,D,H,RO,RW,S,E,Drives", ",") $a_check[0] = 8 $a_check[1] = GUICtrlCreateCheckbox("Archive", 15, 55, 170, 20) $a_check[2] = GUICtrlCreateCheckbox("Directory", 15, 75, 170, 20) $a_check[3] = GUICtrlCreateCheckbox("Hidden", 15, 95, 170, 20) $a_check[4] = GUICtrlCreateCheckbox("Read-Only", 15, 115, 170, 20) $a_check[5] = GUICtrlCreateCheckbox("Read-Write", 15, 135, 95, 20) $a_check[6] = GUICtrlCreateCheckbox("System", 15, 155, 170, 20) $a_check[7] = GUICtrlCreateCheckbox("Exclusive", 15, 175, 170, 20) $a_check[8] = GUICtrlCreateCheckbox("Drives", 15, 195, 170, 20) GUICtrlCreateGroup("", -99, -99, 1, 1) ;close group $listbox = GUICtrlCreateList("", 240, 40, 120, 120) $button = GUICtrlCreateButton("Get Names", 240, 160, 120, 40) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $button _GUICtrlListClear ($listbox) $ret = _GUICtrlListAddDir ($listbox, $s_attr, GUICtrlRead($input)) If ($ret < 0) Then If ($ret == $LB_ERRATTRIBUTE) Then MsgBox(16, "Error", "Invalid Attribute sent to _GUICtrlListAddDir") ElseIf ($ret == $LB_ERRSPACE) Then MsgBox(16, "Error", "insufficient space to store the new strings from calling _GUICtrlListAddDir") ElseIf ($ret == $LB_ERRREQUIRED) Then MsgBox(16, "Error", "Argument required for file search in call to _GUICtrlListAddDir") ElseIf ($ret == $LB_ERR) Then MsgBox(16, "Error", "Unknown error from _GUICtrlListAddDir" & @CRLF & "Possibly no files/folders found") EndIf EndIf Case Else $s_attr = "" For $i = 1 To $a_check[0] If (GUICtrlRead($a_check[$i]) == $GUI_CHECKED) Then If (StringLen($s_attr) > 0) Then $s_attr &= "," & $a_attr[$i] Else $s_attr = $a_attr[$i] EndIf EndIf Next EndSelect WEnd SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
GaryFrost Posted March 1, 2006 Share Posted March 1, 2006 also there's the combo box udf #include <GuiConstants.au3> #include <GuiCombo.au3> Opt('MustDeclareVars',1) Dim $Combo,$ret,$Btn_Exit,$Status,$msg,$allocated GuiCreate("ComboBox Add Dir", 392, 254) $Combo = GuiCtrlCreateCombo("", 70, 10, 270, 100,$CBS_SIMPLE) $allocated = _GUICtrlComboInitStorage($Combo, 26, 50) $ret = _GUICtrlComboAddDir($Combo,"drives") $Btn_Exit = GuiCtrlCreateButton("Exit", 150, 180, 90, 30) $Status = GUICtrlCreateLabel("",0,234,392,20,BitOR($SS_SUNKEN,$SS_CENTER)) GUICtrlSetData($Status,"Pre-Allocated Memory For: " & $allocated & " Items, Drives Added To ComboBox: " & _GUICtrlComboGetCount($Combo)) GuiSetState() While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Or $msg = $Btn_Exit ExitLoop EndSelect WEnd Exit SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
BlazeLondon Posted March 1, 2006 Author Share Posted March 1, 2006 I need to let the user choose a drive on the system that is not present (to create a ramdrive) I have come up with this that seems to work ok (bear in mind im not a real programmer!) #include <GuiConstants.au3> #include <GuiCombo.au3> ;Opt('MustDeclareVars',1) Dim $combo GuiCreate("Select Drive", 392, 254) $Combo = GuiCtrlCreateCombo("", 70, 10, 270, 21) GuiSetState() $stat = DriveStatus ( "z:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"z:") $stat = DriveStatus ( "y:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"y:") $stat = DriveStatus ( "x:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"x:") $stat = DriveStatus ( "w:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"w:") $stat = DriveStatus ( "v:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"v:") $stat = DriveStatus ( "u:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"u:") $stat = DriveStatus ( "t:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"t:") $stat = DriveStatus ( "s:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"s:") $stat = DriveStatus ( "r:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"r:") $stat = DriveStatus ( "q:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"q:") $stat = DriveStatus ( "p:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"p:") $stat = DriveStatus ( "o:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"o:") $stat = DriveStatus ( "n:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"n:") $stat = DriveStatus ( "m:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"m:") $stat = DriveStatus ( "l:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"l:") $stat = DriveStatus ( "k:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"k:") $stat = DriveStatus ( "j:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"j:") $stat = DriveStatus ( "i:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"i:") $stat = DriveStatus ( "h:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"h:") $stat = DriveStatus ( "g:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"g:") $stat = DriveStatus ( "f:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"f:") $stat = DriveStatus ( "e:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"e:") $stat = DriveStatus ( "d:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"d:") ;_GUICtrlComboShowDropDown($Combo,1) ;GUICtrlSetData ( -1, $combo , $var[0] ) while 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exitloop EndSelect wend Link to comment Share on other sites More sharing options...
nfwu Posted March 1, 2006 Share Posted March 1, 2006 (edited) Shorter code: #include <GuiConstants.au3> #include <GuiCombo.au3> ;Opt('MustDeclareVars',1) Dim $combo GuiCreate("Select Drive", 392, 254) $Combo = GuiCtrlCreateCombo("", 70, 10, 270, 21) GuiSetState() For $i = Asc('a') to Asc('z') $stat = DriveStatus (Chr($i)&":") if $stat <> "INVALID" Then GUICtrlSetData($Combo,Chr($i)&":") Next while 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exitloop EndSelect wend #) EDIT: DriceStatus -> DriveStatus Edited March 1, 2006 by nfwu TwitterOut of date stuff:Scripts: Sudoku Solver | Webserver | 3D library (Pure AutoIt) | Wood's GadgetsUDFs: _WoodUniqueID() | _DialogEditIni() | _Console*() | _GetIPConfigData() | _URLEncode/Decode() Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted March 1, 2006 Moderators Share Posted March 1, 2006 ... Just FYI, to make life a bit easier in the future: When doing things like:expandcollapse popup$stat = DriveStatus ( "z:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"z:") $stat = DriveStatus ( "y:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"y:") $stat = DriveStatus ( "x:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"x:") $stat = DriveStatus ( "w:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"w:") $stat = DriveStatus ( "v:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"v:") $stat = DriveStatus ( "u:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"u:") $stat = DriveStatus ( "t:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"t:") $stat = DriveStatus ( "s:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"s:") $stat = DriveStatus ( "r:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"r:") $stat = DriveStatus ( "q:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"q:") $stat = DriveStatus ( "p:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"p:") $stat = DriveStatus ( "o:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"o:") $stat = DriveStatus ( "n:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"n:") $stat = DriveStatus ( "m:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"m:") $stat = DriveStatus ( "l:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"l:") $stat = DriveStatus ( "k:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"k:") $stat = DriveStatus ( "j:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"j:") $stat = DriveStatus ( "i:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"i:") $stat = DriveStatus ( "h:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"h:") $stat = DriveStatus ( "g:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"g:") $stat = DriveStatus ( "f:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"f:") $stat = DriveStatus ( "e:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"e:") $stat = DriveStatus ( "d:" ) if $stat = "INVALID" Then GUICtrlSetData($Combo,"d:")You could always use a For/Next Loop to make life a bit easierFor $i = 90 To 68 Step - 1 Local $stat = DriveStatus(Chr(68) & ':') If $stat = "INVALID" Then GUICtrlSetData($Combo, Chr(68) & ':') Next Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
BlazeLondon Posted March 1, 2006 Author Share Posted March 1, 2006 Im smoked out what the hell is that!!! For $i = 90 To 68 Step - 1!? 90-68 where did those numbers come from?! Link to comment Share on other sites More sharing options...
seandisanti Posted March 1, 2006 Share Posted March 1, 2006 Im smoked out what the hell is that!!! For $i = 90 To 68 Step - 1!? 90-68 where did those numbers come from?!ascii values for the letters.... do a search in help file for ascii to see the whole list Link to comment Share on other sites More sharing options...
BlazeLondon Posted March 1, 2006 Author Share Posted March 1, 2006 ascii values for the letters.... do a search in help file for ascii to see the whole listwho wants to finish me off !$Combo = GuiCtrlCreateCombo("", 50, 110, 270, 21)GuiSetState()$stat = DriveStatus ( "z:" )if $stat = "INVALID" Then GUICtrlSetData($Combo,"z:")$stat = DriveStatus ( "y:" )if $stat = "INVALID" Then GUICtrlSetData($Combo,"y:")$stat = DriveStatus ( "x:" )if $stat = "INVALID" Then GUICtrlSetData($Combo,"x:")I have the combo box on the screen, its empty, if i pull it down it contains Z, X and Yperfect!But i want Z to be already selected in the combo box or Y if Z isn't in the list Link to comment Share on other sites More sharing options...
GaryFrost Posted March 1, 2006 Share Posted March 1, 2006 if your wanting the 1st selection _GUICtrlComboSetCurSel($Combo,0) or the last _GUICtrlComboSetCurSel($Combo,_GUICtrlComboGetCount($Combo) - 1) SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
GaryFrost Posted March 2, 2006 Share Posted March 2, 2006 (edited) #include <GuiConstants.au3> #include <GuiCombo.au3> ;Opt('MustDeclareVars',1) Dim $Combo GUICreate("Select Drive", 392, 254) $Combo = GUICtrlCreateCombo("", 70, 10, 270, 21) For $i = 90 To 68 Step - 1 Local $stat = DriveStatus(Chr($i) & ':') If $stat = "INVALID" Then GUICtrlSetData($Combo, Chr($i) & ':') Next _GUICtrlComboSetCurSel ($Combo, 0) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop EndSelect WEnd Edited March 2, 2006 by gafrost SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now