user52 Posted September 20, 2006 Share Posted September 20, 2006 question: how do i create unique cases in a loop? the idea: check a folder for *.txt files, and create a newmenuitem for each item found so when a user selects the context menu item it will run that specific function (aka paste the selected text) also: see the comments, and thanks for your help! expandcollapse popup#include <GUIConstants.au3> #include <File.au3> ;#NoTrayIcon HotKeySet("!x", "Show") Dim $Context ContextMenu() Func ContextMenu() $DW = (@DesktopWidth - 2)/2 $DH = (@DesktopHeight - 2)/2 $Context = GUICreate("Context Menu", 2, 2, -1, -1, $WS_POPUP) ;Inserts $contextmenu = GUICtrlCreateContextMenu() $insert = GUICtrlCreateMenu ("Insert", $contextmenu) ;loop to find files in a folder and create new menu items based on the the name of the files found ;also, create a unique 'Case' for when each new menu item found that, when selected, reads a specified file and pastes the read $search = FileFindFirstFile(@ScriptDir & "\*.txt") ; Check if the search was successful If $search = -1 Then MsgBox(0, "Error", "No files found") ;Exit EndIf While 1 $file = FileFindNextFile($search) If @error Then ExitLoop ;having trouble here giving a unique variable name each loop $uniquenamegoeshere = GUICtrlCreateMenuitem($file,$insert) ;is this the right way to do this??? or should this go further below in the While loop $msg = GUIGetMsg() Select Case $msg = $uniquenamegoeshere ;read file to be inserted $insert = @ScriptDir & "\a.txt" $file = FileOpen($insert,0) $read = FileRead($insert) FileClose($file) Insert($read) EndSelect WEnd ; Close the search handle FileClose($search) $exititem = GUICtrlCreateMenuitem ("Exit", $contextmenu) $pos = MouseGetPos() $posH = $pos[0] $posV = $pos[1] GUISetState(@SW_HIDE, $Context) While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $exititem Exit Case $msg = $uniquenamegoeshere ;read file to set signature $file = @ScriptDir & "\a.txt" FileOpen($file,0) $sig = FileRead($file) FileClose($file) Insert($sig) Case Else ;; EndSelect WEnd EndFunc ; => ContextMenu Func Show() GUISetState(@SW_SHOW, $Context) ControlClick("Context Menu", "", "", "right", 1) EndFunc Func Hide() GUISetState(@SW_HIDE, $Context) EndFunc Func Insert($a) ;hide menu Hide() ;store user's current clipboard $temp = ClipGet() ;send signature text to clipboard ClipPut($a) ;print clipboard Send("^v") ;set user's clipboard back ClipPut($temp) EndFunc Link to comment Share on other sites More sharing options...
CoderDunn Posted September 20, 2006 Share Posted September 20, 2006 Look into the Assign() function in the helpfile. Hallman Link to comment Share on other sites More sharing options...
user52 Posted September 21, 2006 Author Share Posted September 21, 2006 (edited) Thanks for the help. When i run the program and use the Assign() function, it calls the Insert() function right away. I'm trying to make it call the Insert() function when the user clicks on a certain context menu item. Here is what i've been trying: $uniquenamegoeshere = GUICtrlCreateMenuitem("awefljawef",$contextmenu) Assign($uniquenamegoeshere,Insert($read)) Func Insert($a) ;hide menu Hide() ;store user's current clipboard $temp = ClipGet() ;send signature text to clipboard ClipPut($a) ;print clipboard Send("^v") ;set user's clipboard back ClipPut($temp) EndFunc . Edited September 21, 2006 by user52 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