Jump to content

GUI start and Stop event listener


Recommended Posts

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
 

Link to comment
Share on other sites

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:

#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

 

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: 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 Program

AutoIt_Icon_small.pngUDFs: 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
 
AutoIt_Icon_small.pngExamples: 
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 AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Link to comment
Share on other sites

Your welcome.

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: 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 Program

AutoIt_Icon_small.pngUDFs: 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
 
AutoIt_Icon_small.pngExamples: 
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 AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...