esmaeel Posted June 2, 2020 Posted June 2, 2020 Hello, I'm trying to design a GUI in AutoIT in which I could start and stop a while loop any time the specified Button is clicked. I want to record the desktop activities when the start is clicked by the user and stop it when stop is clicked ans then start it again also whenever start is clicked. The problem is when I click the start , it could never be stopped. Is there an Idea? Thank you in advance Here is my code: #include <GUIConstantsEx.au3> $hGUI = GUICreate("D.A.Recorder", 250, 100) $hButton_1 = GUICtrlCreateButton("Start", 10, 10, 80, 30) $hButton_2 = GUICtrlCreateButton("Stop", 10, 50, 80, 30) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $hButton_1 , $hButton_2 _Func_1() EndSwitch WEnd Func _Func_1() While 1 $IdMsg = GUIGetMsg() if $IdMsg = $hButton_2 Then ExitLoop EndIf Local $Wactive = WinGetTitle("[ACTIVE]") $Begin = TimerInit() $BeginTime = @HOUR & ":" & @MIN WinWaitNotActive($Wactive) ;Just waits until the current active Window is either closed or another window set as active $dif = TimerDiff($begin) ;Calculates the elapsed time in Milliseconds $EndTime = @HOUR & ":" & @MIN $WorkedTime = $dif/1000 ;Convert the time to seconds $result = StringFormat("%.2f",$WorkedTime) FileWriteLine("OfflineRecorder.txt", $BeginTime & " | " & $EndTime & " | " & $result & " | " & $Wactive) WEnd EndFunc
MrCreatoR Posted June 3, 2020 Posted June 3, 2020 First of all, please use AutoIt code tags for your code. About your issue, probably inside the loop it's hangs on WinWaitNotActive call and thus your button event not checked. You could make a wrapper for that function to see if during it's execution there is some events from the GUI: expandcollapse popup#include <GUIConstantsEx.au3> Global $bStart = False $hGUI = GUICreate("D.A.Recorder", 250, 100) $iStart_Bttn = GUICtrlCreateButton("Start", 10, 10, 80, 30) $iStop_Bttn = GUICtrlCreateButton("Stop", 10, 50, 80, 30) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $iStart_Bttn $bStart = True Case $iStop_Bttn $bStart = False EndSwitch If $bStart Then $Wactive = WinGetTitle("[ACTIVE]") $Begin = TimerInit() $BeginTime = @HOUR & ":" & @MIN ;---- WinWaitNotActive Wrapper ---- ;Just waits until the current active Window is either closed or another window set as active While WinActive($Wactive) Switch GUIGetMsg() Case $iStop_Bttn $bStart = False ExitLoop Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd ;---- WinWaitNotActive Wrapper ---- If $bStart Then $dif = TimerDiff($begin) ;Calculates the elapsed time in Milliseconds $EndTime = @HOUR & ":" & @MIN $WorkedTime = $dif / 1000 ;Convert the time to seconds $result = StringFormat("%.2f", $WorkedTime) FileWriteLine("OfflineRecorder.txt", $BeginTime & " | " & $EndTime & " | " & $result & " | " & $Wactive) EndIf EndIf WEnd esmaeel 1 Reveal hidden contents Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team
esmaeel Posted June 3, 2020 Author Posted June 3, 2020 Fantastic, thank you so much MrCreatoR, it worked perfect.
MrCreatoR Posted June 3, 2020 Posted June 3, 2020 Your welcome. esmaeel 1 Reveal hidden contents Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team
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