52AT Posted June 6, 2006 Share Posted June 6, 2006 See the following code, double click the n.notepad in the listbox to open it and don't close it, then single click any item in the listbox, immediately, another notepad was opened. Why? and how solve it? please help me, thanks Code: #include <GUIConstants.au3> #NoTrayIcon Global Const $WM_COMMAND = 0x0111 Global Const $LBN_SELCHANGE = 1 Global Const $LBN_DBLCLK = 2 Opt ("RunErrorsFatal", 0 ) $Form2 = GUICreate("Menu", 300, 300, 302, 218, -1, $WS_EX_TOPMOST) GUISetIcon("D:\005.ico") $GCCList = GuiCtrlCreateList("", 20, 70, 200, 200) GuiCtrlSetData(-1, "n.notepad|b.List|c.Control|d.Here|g.Sample|f.List|h.Control|j.Here|h.here|", "a.menu") $Label1 = GUICtrlCreateLabel("Menu", 20, 32, 140, 30) GUICtrlSetFont(-1, 20, 400, 0, "Century Gothic") GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND") GUISetState(@SW_SHOW) While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop EndSelect WEnd Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam) $nNotifyCode = BitShift($wParam, 16) $nID = BitAnd($wParam, 0x0000FFFF) $hCtrl = $lParam If $nID = $GCCList Then Switch $nNotifyCode Case $LBN_DBLCLK If GUICtrlRead($GCCList) = 'n.notepad' Then Run('Notepad.exe') Return 0 EndSwitch EndIf EndFunc Link to comment Share on other sites More sharing options...
Xenobiologist Posted June 6, 2006 Share Posted June 6, 2006 HI, does it have to be done with GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND") or would another solution also okay? So long, Mega Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times Link to comment Share on other sites More sharing options...
52AT Posted June 7, 2006 Author Share Posted June 7, 2006 So who has another solution to it? if had, please help me to modify the above code, so that i can cxecute some program through double clicking the listboxitem, but would not cxecute the program if i double clicked any area beyond the listbox Link to comment Share on other sites More sharing options...
GaryFrost Posted June 7, 2006 Share Posted June 7, 2006 So who has another solution to it? if had, please help me to modify the above code, so that i can cxecute some program through double clicking the listboxitem, but would not cxecute the program if i double clicked any area beyond the listbox Far as I can tell, it doesn't work correctly when using a run command, at least this run command. As a test I commented out the line with the run command, made a line that only sent output to the console (Using SciTE), at this point the double click worked as it should Here's the test script expandcollapse popup#include <GUIConstants.au3> #NoTrayIcon Global Const $WM_COMMAND = 0x0111 Global Const $LBN_SELCHANGE = 1 Global Const $LBN_DBLCLK = 2 Opt("RunErrorsFatal", 0) $Form2 = GUICreate("Menu", 300, 300, 302, 218, -1, $WS_EX_TOPMOST) GUISetIcon("D:\005.ico") $GCCList = GUICtrlCreateList("", 20, 70, 200, 200) GUICtrlSetData(-1, "n.notepad|b.List|c.Control|d.Here|g.Sample|f.List|h.Control|j.Here|h.here|", "a.menu") $Label1 = GUICtrlCreateLabel("Menu", 20, 32, 140, 30) GUICtrlSetFont(-1, 20, 400, 0, "Century Gothic") GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND") GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop EndSelect WEnd Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam) $nNotifyCode = BitShift($wParam, 16) $nID = BitAND($wParam, 0x0000FFFF) $hCtrl = $lParam If $nID = $GCCList Then Switch $nNotifyCode Case $LBN_DBLCLK If GUICtrlRead($GCCList) = 'n.notepad' Then ConsoleWrite(_DebugHeader("$LBN_DBLCLK")) ;~ If GUICtrlRead($GCCList) = 'n.notepad' Then Run('Notepad.exe') EndSwitch EndIf EndFunc ;==>MY_WM_COMMAND Func _DebugHeader($s_text) Return _ "!===========================================================" & @LF & _ "+===========================================================" & @LF & _ "-->" & $s_text & @LF & _ "+===========================================================" & @LF EndFunc ;==>_DebugHeader 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...
Xenobiologist Posted June 7, 2006 Share Posted June 7, 2006 Hi, question could be why a listbox? Why not using a button or some other control? So long, Mega Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times Link to comment Share on other sites More sharing options...
52AT Posted June 8, 2006 Author Share Posted June 8, 2006 Hi,question could be why a listbox? Why not using a button or some other control?So long,MegaI think I can make the interface more succinct in this waySince MY_WM_COMMAND doesn't work correctly when using a run command, who has other codes can make me cxecute some program through double clicking the listboxitem, but would not cxecute the program if i double clicked any area beyond the listbox Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted June 8, 2006 Moderators Share Posted June 8, 2006 (edited) I think I can make the interface more succinct in this waySince MY_WM_COMMAND doesn't work correctly when using a run command, who has other codes can make me cxecute some program through double clicking the listboxitem, but would not cxecute the program if i double clicked any area beyond the listboxI would suggest looking in the Search Option for "Double Click" in titles only... That's always the best place start before posting a question like in the last post.http://www.autoitscript.com/forum/index.ph...te=Double+ClickEdit:Now you will see more than one option. Edited June 8, 2006 by SmOke_N 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...
GaryFrost Posted June 8, 2006 Share Posted June 8, 2006 The problem with WM_COMMAND has brought to the devloper(s) attention and added to the list of of things to look at. Gary 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