Newb Posted December 15, 2010 Share Posted December 15, 2010 (edited) Sorry for posting but i wasn't able to find it on the forum. I made a little program which automates some functions on my pc. I've set 3 hotkeys. f1 starts the script, f2 pauses/unpauses it, f3 closes it. When i use hotkeys, all fine.The script goes, starts, pauses and exit normally. I set up some buttons on the gui too to make the thing more comfortable. At first i named the buttons handles like the function that they activates and there i got the first problem, so i had to change the button handle names because it messed up the script. Example $Exit=GuiCtrlCreateButton (etc etc) Func Exit() Exit Endfunc Same button name, same function name. So i put button name something like $ButtonExit=etc etc (Saying this in case it might be useful to some reader) The real problem is this: $Buttonstart = GUICtrlCreateButton("Start", 176, 8, 49, 25, $WS_GROUP) $Buttonpause = GUICtrlCreateButton("Pause", 176, 48, 49, 25, $WS_GROUP) $ButtonExit = GUICtrlCreateButton("Exit", 176, 88, 49, 25, $WS_GROUP) HotKeySet("{F1}","Start") HotKeySet("{F2}","Pause") HotKeySet("{F3}","Close") Func Start() blah blah Endfunc Func Pause() blah blah Endfunc Func Exit() blah blah Endfunc Button are in a standard GuiGetMsg() gui While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd So with the hotkeys all is fine, program runs normally, but with buttons, I can start it, but I can't pause/exit, it seems stuck with the ongoing function... What's the matter? Edited December 15, 2010 by Newb I'm a compulsive poster. When I post something, come to read it at least 5 minutes later after the posting, because I will edit it. I edited even this signature a few minutes later after I wrote it. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted December 15, 2010 Moderators Share Posted December 15, 2010 Newb,HotKeys will interrupt a running function - normal GUI controls do not unless you take some special actions. Look at the Interrupting a running function tutorial in the Wiki to see how to get the buttons to work as you wish. As to the naming matter:$Exit=GuiCtrlCreateButton (etc etc) Func Exit()using existing Keyword/Command names as script function names is quite likely to end up in tears - good call to change. There should be no problem with the ControlID variables, but I do tend to avoid it if possible. 6*M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Newb Posted December 15, 2010 Author Share Posted December 15, 2010 (edited) Newb, HotKeys will interrupt a running function - normal GUI controls do not unless you take some special actions. Look at the Interrupting a running function tutorial in the Wiki to see how to get the buttons to work as you wish. As to the naming matter: $Exit=GuiCtrlCreateButton (etc etc) Func Exit() using existing Keyword/Command names as script function names is quite likely to end up in tears - good call to change. There should be no problem with the ControlID variables, but I do tend to avoid it if possible. 6*M23 Well, Thanks a lot Melba23, but I didn't got almost nothing from those articles... Just can't understand them I'll think I'll do in another way, which it may be not good to look, unprofessional or slower, but easier to me. If you want to eplain me better how the script blocking part works I will be glad to read it. Until then, my solution will be like this: Func Start() While 1 If $State=1 Then Else $Stato=1 Execute function Check if $State is changed to 0, If it is then Exitloop, Else keep going on till it wont hit this line of code again Endfunc What you think about this? Edited December 15, 2010 by Newb I'm a compulsive poster. When I post something, come to read it at least 5 minutes later after the posting, because I will edit it. I edited even this signature a few minutes later after I wrote it. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted December 15, 2010 Moderators Share Posted December 15, 2010 Newb,As I wrote the tutorial, I do not know how to explain it more clearly! However, your suggested solution looks as if it will suffer from the same problem - how do you get the value of $State to change while the function is running? You can do it via a HotKey, but to get the buttons to work you need a message handler as explained (obviously not well enough) in the tutorial.Let us try and understand what is going on in small steps. Firstly, what is a message handler?Purist/pedant warning - Look away now! Whenever you do anything in Windows it generates a message which is sent to the affected GUI so it knows what to do. Take clicking on a button within a GUI - AutoIt knows when you have clicked on a button because Windows sends a message saying so. Normally we react to the button press by using a GUIGetMsg loop or setting an GUICtrlSetOnEvent function. But we can also react directly to the message - which is what AutoIt does internally so it knows when to action the code we set for that control. GUIRegisterMsg lets us do the same thing as AutoIt - intercepting the message directly. When a button is pressed it sends out a WM_COMMAND message, so we need to intercept any such messages and see if they come from our button:#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $hGUI = GUICreate("Test", 500, 500) $hButton = GUICtrlCreateButton("Push Me", 10, 10, 80, 30) GUISetState() ; Intercept Windows WM_COMMAND messages with our own handler GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd ; Here is the handler which intercepts the WM_COMMAND messages Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam) ; Check if it was our button was pressed and sent the message If BitAND($wParam, 0x0000FFFF) = $hButton Then ; It was - so tell us about it MsgBox(0, "Button" , "Pushed!") EndIf Return $GUI_RUNDEFMSG EndFunc ;==>_WM_COMMANDAs you can see, we get an indication that the button was pressed without having to use GUIGetMsg or GUICtrlSetOnEvent.Do you follow so far? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Newb Posted December 15, 2010 Author Share Posted December 15, 2010 Newb, As I wrote the tutorial, I do not know how to explain it more clearly! However, your suggested solution looks as if it will suffer from the same problem - how do you get the value of $State to change while the function is running? You can do it via a HotKey, but to get the buttons to work you need a message handler as explained (obviously not well enough) in the tutorial. Let us try and understand what is going on in small steps. Firstly, what is a message handler? Purist/pedant warning - Look away now! Whenever you do anything in Windows it generates a message which is sent to the affected GUI so it knows what to do. Take clicking on a button within a GUI - AutoIt knows when you have clicked on a button because Windows sends a message saying so. Normally we react to the button press by using a GUIGetMsg loop or setting an GUICtrlSetOnEvent function. But we can also react directly to the message - which is what AutoIt does internally so it knows when to action the code we set for that control. GUIRegisterMsg lets us do the same thing as AutoIt - intercepting the message directly. When a button is pressed it sends out a WM_COMMAND message, so we need to intercept any such messages and see if they come from our button: #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $hGUI = GUICreate("Test", 500, 500) $hButton = GUICtrlCreateButton("Push Me", 10, 10, 80, 30) GUISetState() ; Intercept Windows WM_COMMAND messages with our own handler GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd ; Here is the handler which intercepts the WM_COMMAND messages Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam) ; Check if it was our button was pressed and sent the message If BitAND($wParam, 0x0000FFFF) = $hButton Then ; It was - so tell us about it MsgBox(0, "Button" , "Pushed!") EndIf Return $GUI_RUNDEFMSG EndFunc ;==>_WM_COMMAND As you can see, we get an indication that the button was pressed without having to use GUIGetMsg or GUICtrlSetOnEvent. Do you follow so far? M23 No. I got all the explanation about the message sending, but the code you put, well i can't get nothing of it, even with comments. I wasn't even able to implement it in my script... Duh.... Trying to re read the guide you gave me before, but... nothing. The problem is to implement the code in my script, i really didn't understand what those functions are... GUISetState() is for drawing an empty GUI? or what? GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") No idea of what's this and this (read comments), well, where i have to put this? and what should i put instead of the message box? My function call? or What? Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam); I don't see where these parameters got passed to function ; Check if it was our button was pressed and sent the message If BitAND($wParam, 0x0000FFFF) = $hButton Then;Yeah got this, If buttonpressed is my button then do msgbox ; It was - so tell us about it MsgBox(0, "Button" , "Pushed!") EndIf Return $GUI_RUNDEFMSG;What the hell is this?? EndFunc ;==>_WM_COMMAND Do i have to post my script source I'm a compulsive poster. When I post something, come to read it at least 5 minutes later after the posting, because I will edit it. I edited even this signature a few minutes later after I wrote it. Link to comment Share on other sites More sharing options...
Newb Posted December 16, 2010 Author Share Posted December 16, 2010 (edited) Sorry for the double post, but I needed to make a new clear one, which I will edit in case of need. I did it also because I wanted to make the post complete in case someone find himself in the same situation. Thanks Melba23, I wanted to make this new post because I wanted to update and inform you that I grasped the concept and understood how it works. Today my mind was overloaded and very tired because I passed all the afternoon trying to solve that problem so I was a bit messed up and not able to read articles clearly and with the needed concentration. Tonight (it's in the night that I learn the best) I put up some music and try to read the whole articles about Interrupting a function and GuiRegisterMsg. Then with fresh mind, in about 20-30 minutes of trying and reading, i got the whole thing and almost achieved to implement it in my code. So, I got how to grab windows messages and pass them to the function, checking wheter a button is pressed or not. Anyway the problem still persist. From what I understood it's because I have to put some kind of checkpoint into the function I want to interrupt. So tomorrow I will try to put that checkpoint and see what's wrong. Thanks again for your help. EDIT: Nothing I don't get to make those buttons work. Posting reduced version of the code, trying to underline what should be useful to solve the problem: expandcollapse popup#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> $GuiPrincipale = GUICreate("Renderizer", 227, 121, 192, 124) GUICtrlCreateLabel("Auto rendering", 24, 8, 130, 17) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") $Istruzioni = GUICtrlCreateButton("Instructions", 8, 64, 57, 25, $WS_GROUP) GUICtrlCreateLabel("STATE:", 16, 32, 68, 17) $LabelStato = GUICtrlCreateLabel("OFF", 96, 32, 72, 18, BitOR($SS_CENTER,$SS_SUNKEN)) GUICtrlSetBkColor(-1, 0xFF0000) GUICtrlCreateLabel("Interval:", 8, 96, 50, 17) $Intervallo = GUICtrlCreateInput("3", 64, 96, 25, 21) $BStart = GUICtrlCreateButton("Start", 176, 8, 49, 25, $WS_GROUP) $BPause = GUICtrlCreateButton("Pause", 176, 48, 49, 25, $WS_GROUP) $BUscita = GUICtrlCreateButton("Exit", 176, 88, 49, 25, $WS_GROUP) GUISetState(@SW_SHOW) GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") HotKeySet("{F1}","Start") HotKeySet("{F2}","Pause") HotKeySet("{F3}","Close") $Pause1=False $Stato=0;0=OFF 1=Active 2=In Pause While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $Istruzioni GUISetState(@SW_DISABLE,$GuiPrincipale) MsgBox(0,"BlahBlahBlah","STUFFSTUFFSTUFFSTUFF") GuisetState(@SW_ENABLE,$GuiPrincipale) GUISetState(@SW_RESTORE,$GuiPrincipale) EndSwitch WEnd Func Pause() If $Stato=0 Then Sleep(10) Else $Pause1= Not $Pause1 $Stato=2 Check() While $Pause1 Sleep(100) WEnd $Stato=1 Check() EndIf EndFunc Func Check() If $Stato=0 Then GUICtrlSetBkColor($LabelStato,0xFF0000) GUICtrlSetData($LabelStato,"OFF") ElseIf $Stato=1 Then GUICtrlSetBkColor($LabelStato,0x00FF00) GUICtrlSetData($LabelStato,"ON") Elseif $Stato=2 Then GUICtrlSetBkColor($LabelStato,0x999999) GUICtrlSetData($LabelStato,"In Pause") EndIf EndFunc Func Start() While 1 If $Stato=1 Then $Stato=0 ConsoleWrite($STato) Check() ExitLoop Else $Stato=1 If Not IsNumber(Number(GUICtrlRead($Intervallo))) Or Number(GUICtrlRead($Intervallo))=0 Then GUISetState(@SW_DISABLE,$GuiPrincipale) MsgBox(0,"Valore Intervallo Errato","Non hai messo un valore valido nell'intervallo, Il valore verrà ora resettato") GUICtrlSetData($Intervallo,"3") GuisetState(@SW_ENABLE,$GuiPrincipale) GUISetState(@SW_RESTORE,$GuiPrincipale) ExitLoop EndIf Check() MouseClick("left",100,300) Sleep(1000) MouseClick("left",105,306) Sleep(1000) MouseClick("left",123,347) Sleep(1000) MouseClick("left",103,368) Sleep(1000) MouseClick("left",105,309) Sleep(1000) MouseClick("left",106,300) Sleep(1000) EndIf Wend EndFunc Func Close() Exit EndFunc Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam) ; Check if it was our button was pressed and sent the message If BitAND($wParam, 0x0000FFFF) = $BStart Then Start() ElseIf BitAND($wParam, 0x0000FFFF) = $BPause Then Pause() ElseIf BitAND($wParam, 0x0000FFFF) = $BUscita Then Close() EndIf Return $GUI_RUNDEFMSG EndFunc ;==>_WM_COMMAND Sorry if long, tried to make it as small as i could. Edited December 16, 2010 by Newb I'm a compulsive poster. When I post something, come to read it at least 5 minutes later after the posting, because I will edit it. I edited even this signature a few minutes later after I wrote it. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted December 16, 2010 Moderators Share Posted December 16, 2010 Newb, I grasped the concept and understood how it worksHurrah! You have restored my faith in my ability to write tutorials! it's because I have to put some kind of checkpoint into the function I want to interruptCorrect - and this is how you might do it: expandcollapse popup#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> HotKeySet("{F1}", "Start") HotKeySet("{F2}", "Pause") HotKeySet("{F3}", "Close") $GuiPrincipale = GUICreate("Renderizer", 227, 121, 192, 124) GUICtrlCreateLabel("Auto rendering", 24, 8, 130, 17) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") $Istruzioni = GUICtrlCreateButton("Instructions", 8, 64, 57, 25, $WS_GROUP) GUICtrlCreateLabel("STATE:", 16, 32, 68, 17) $LabelStato = GUICtrlCreateLabel("OFF", 96, 32, 72, 18, BitOR($SS_CENTER, $SS_SUNKEN)) GUICtrlSetBkColor(-1, 0xFF0000) GUICtrlCreateLabel("Interval:", 8, 96, 50, 17) $Intervallo = GUICtrlCreateInput("3", 64, 96, 25, 21) $BStart = GUICtrlCreateButton("Start", 176, 8, 49, 25, $WS_GROUP) $BPause = GUICtrlCreateButton("Pause", 176, 48, 49, 25, $WS_GROUP) $BUscita = GUICtrlCreateButton("Exit", 176, 88, 49, 25, $WS_GROUP) GUISetState(@SW_SHOW) GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") $Stato = 0;0=OFF 1=Active 2=In Pause While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $Istruzioni GUISetState(@SW_DISABLE, $GuiPrincipale) MsgBox(0, "BlahBlahBlah", "STUFFSTUFFSTUFFSTUFF") GUISetState(@SW_ENABLE, $GuiPrincipale) GUISetState(@SW_RESTORE, $GuiPrincipale) ; We need the Start button here as we never interrupt with it Case $BStart Start() EndSwitch WEnd Func Pause() ; Much simpler code - just change the state of the flag Switch $Stato ; Case 0 ; Do nothing as we are not running Case 1 $Stato = 2 GUICtrlSetData($BPause, "Resume") ; Change button text to show action of next press Case 2 $Stato = 1 GUICtrlSetData($BPause, "Pause") EndSwitch Check() EndFunc ;==>Pause Func Check() If $Stato = 0 Then GUICtrlSetBkColor($LabelStato, 0xFF0000) GUICtrlSetData($LabelStato, "OFF") ElseIf $Stato = 1 Then GUICtrlSetBkColor($LabelStato, 0x00FF00) GUICtrlSetData($LabelStato, "ON") ElseIf $Stato = 2 Then GUICtrlSetBkColor($LabelStato, 0x999999) GUICtrlSetData($LabelStato, "In Pause") EndIf EndFunc ;==>Check Func Start() ; Only start if we were stopped - we need to resume a running function If $Stato Then Return ; Set running flag $Stato = 1 Check() While 1 If Not IsNumber(Number(GUICtrlRead($Intervallo))) Or Number(GUICtrlRead($Intervallo)) = 0 Then GUISetState(@SW_DISABLE, $GuiPrincipale) MsgBox(0, "Valore Intervallo Errato", "Non hai messo un valore valido nell'intervallo, Il valore verrà ora resettato") GUICtrlSetData($Intervallo, "3") GUISetState(@SW_ENABLE, $GuiPrincipale) GUISetState(@SW_RESTORE, $GuiPrincipale) ExitLoop EndIf ; We check during these pauses whether to pause, continue or exit ConsoleWrite("Mouseclicking 1" & @CRLF) ; MouseClick("left",100,300) _CheckDuringWait(1000) ConsoleWrite("Mouseclicking 2" & @CRLF) ; MouseClick(("left",105,306) _CheckDuringWait(1000) ConsoleWrite("Mouseclicking 3" & @CRLF) ; MouseClick(("left",123,347) _CheckDuringWait(1000) ConsoleWrite("Mouseclicking 4" & @CRLF) ; MouseClick(("left",103,368) _CheckDuringWait(1000) ConsoleWrite("Mouseclicking 5" & @CRLF) ; MouseClick(("left",105,309) _CheckDuringWait(1000) ConsoleWrite("Mouseclicking 6" & @CRLF) ; MouseClick("left",106,300) _CheckDuringWait(1000) WEnd EndFunc ;==>Start Func _CheckDuringWait($iPause) ; Start the timer Local $iBegin = TimerInit() ; Until the timer expires we loop here Do ; If we are to pause then keep resetting the timer to keepus in the loop If $Stato = 2 Then $iBegin = TimerInit() ; If the [X] is pressed - Exit If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit Until TimerDiff($iBegin) > $iPause ; If the timer runs out we can continue EndFunc ;==>_CheckDuringWait Func Close() Exit EndFunc ;==>Close Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam) ; Check if it was our button was pressed and sent the message Switch BitAND($wParam, 0x0000FFFF) Case $BPause Pause() Case $BUscita ; Exit directly Exit EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>_WM_COMMAND I have commented liberally so you should be able to follow, but please do ask if you have any questions. But if necessary wait and try with music this evening - then you might understand better! M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Newb Posted December 16, 2010 Author Share Posted December 16, 2010 (edited) Well, many thanks Melba, but, including those buttons in my script is way too hard. It messed up all the script and now i have to add tons of checks everywhere because when I included that windows messages interceptor (DAMNED ME AND WHEN I DECIDED TO PUT THOSE EXTRA BUTTONS IN THE GUI ) lot of different things need to be fixed now (I.E controls not coloring well, function running just 1 time and then i can't start it again and so on). And a script that just makes some simple click became a 250-300 line script. Honestly, this need to be improved in autoit. It's ridiculous how much work you have to do to add some buttons in a script with hotkeys... It seems a simple operation, but when someone has to do a simple project, it's totally not worth it. I raged for 2 days, and when i finally got helped by you I still have problems of various nature. Not good at all, I won't never use buttons and functions togheter again , unless developement team will make something more easier to handle. Too much effort for a sooooo little gain. Thanks again for you help, you've been very kind and professional, and humorous too, but i surrend. I will make it without buttons. Edited December 16, 2010 by Newb I'm a compulsive poster. When I post something, come to read it at least 5 minutes later after the posting, because I will edit it. I edited even this signature a few minutes later after I wrote it. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted December 16, 2010 Moderators Share Posted December 16, 2010 Newb,Honestly, this need to be improved in autoit. It's ridiculous how much work you have to do to add some buttons in a script with hotkeys...But we did not do that - we made the buttons act as HotKeys and so able to interrupt a running function, which is a whole different level. To get the full functionality that you now have just using HotKeys, you would still need a fair amount of the code I added to your original script. Adding a GUIRegisterMsg line and a short handler function to make buttons act as HotKeys does not seem too much effort to me given the benefit you get.Just accept that you asked to do something which is quite difficult and, at the cost of a pretty small number of lines of additional code, got what you wanted. Or rant away - your choice. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Newb Posted December 16, 2010 Author Share Posted December 16, 2010 (edited) Well, anyway, when i put that "little" additional code, whole script messed up. I think I'll rant away, this script is too simple to loose so much time on it. Edited December 16, 2010 by Newb I'm a compulsive poster. When I post something, come to read it at least 5 minutes later after the posting, because I will edit it. I edited even this signature a few minutes later after I wrote it. Link to comment Share on other sites More sharing options...
Zedna Posted December 16, 2010 Share Posted December 16, 2010 (edited) Honestly, this need to be improved in autoit. It's ridiculous how much work you have to do to add some buttons in a script with hotkeys... It seems a simple operation, but when someone has to do a simple project, it's totally not worth it. I raged for 2 days, and when i finally got helped by you I still have problems of various nature. Not good at all, I won't never use buttons and functions togheter again , unless developement team will make something more easier to handle. Too much effort for a sooooo little gain. You are newbie (not skilled in Autoit/programming) so you can't do such "clever" recommendations for Autoit improvement because it's wrong.If you don't want to learn new things then don't plan/make complicated scripts and stay only with basic ones.No offence. Edited December 16, 2010 by Zedna Resources UDF ResourcesEx UDF AutoIt Forum Search Link to comment Share on other sites More sharing options...
Newb Posted December 17, 2010 Author Share Posted December 17, 2010 You are newbie (not skilled in Autoit/programming) so you can't do such "clever" recommendations for Autoit improvement because it's wrong.If you don't want to learn new things then don't plan/make complicated scripts and stay only with basic ones.No offence.No problem, I understand your point of view.Anyway, it seems I will forcefully have to learn that thing, because It seems I'll need it many times. Just now that I managed to finish my project in the old way I decided, I still need those buttons breaking functions in the GUI.Damn... Let's see how long it will take to master this. Since i registered, I learned a lot, so this should be another easy task...Thanks for the help guys I'm a compulsive poster. When I post something, come to read it at least 5 minutes later after the posting, because I will edit it. I edited even this signature a few minutes later after I wrote it. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted December 17, 2010 Moderators Share Posted December 17, 2010 Newb,If you are having trouble integrating "HotKey Buttons" into your script, just post the code and we can take a look to see if we can help you. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Newb Posted December 17, 2010 Author Share Posted December 17, 2010 Newb,If you are having trouble integrating "HotKey Buttons" into your script, just post the code and we can take a look to see if we can help you. M23Well i totally erased those WM_COMMANDS because the script was so messed up... and I wrote it back as I intended to, now it works fine and it's good with hotkeys. I'll try to add button later when I have my script working and I have time to test that message intercepting functions. I'm a compulsive poster. When I post something, come to read it at least 5 minutes later after the posting, because I will edit it. I edited even this signature a few minutes later after I wrote it. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted December 17, 2010 Moderators Share Posted December 17, 2010 Newb, Well, when you do get round to it you know where we are if you run into any problems. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Newb Posted December 19, 2010 Author Share Posted December 19, 2010 Newb,Well, when you do get round to it you know where we are if you run into any problems. M23Well this should happen in a short time, since everytime i try to update/upgrade the script i see i need them more and more. I'm a compulsive poster. When I post something, come to read it at least 5 minutes later after the posting, because I will edit it. I edited even this signature a few minutes later after I wrote it. 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