Jump to content

Recommended Posts

Posted (edited)

Hi guys, i have a script with a stop loop like this

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$fInterrupt = 0
$hGUI = GUICreate("Test", 100, 100)
$hButton_1 = GUICtrlCreateButton("Func One", 10, 10, 80, 30)
$hButton_2 = GUICtrlCreateButton("Func Two", 10, 50, 80, 30)
GUISetState()
GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hButton_1
            _Func_1()
        Case $hButton_2
            _Func_2()
    EndSwitch
WEnd

Func _Func_1()
    $fInterrupt = 0
    For $i = 1 To 20
        ConsoleWrite("-Func 1 Running" & @CRLF)
        If $fInterrupt <> 0 Then
            ConsoleWrite("!Func 1 interrrupted by Func 2" & @CRLF)
            Return
        EndIf
        Sleep(100)
    Next
    ConsoleWrite(">Func 1 Ended" & @CRLF)
EndFunc

Func _Func_2()
    For $i = 1 To 3
        ConsoleWrite("+Func 2 Running" & @CRLF)
        Sleep(100)
    Next
    ConsoleWrite(">Func 2 Ended" & @CRLF)
EndFunc
Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    If BitAND($wParam, 0x0000FFFF) =  $hButton_2 Then $fInterrupt = 1
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_COMMAND

Work fine, but for GUI space problem i need to set it on the same button, one click for start ( label "Start" ) and then the second click for stop it ( label "Stop")

I can make GUICtrlSetData for change the name, but i don't undestand how to stop the Func without using another button.

Thanks :)

Edited by johnmcloud
  • Moderators
Posted

johnmcloud,

That was more difficult that I thought it would be: :)

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$fInterrupt = 0
$hGUI = GUICreate("Test", 100, 100)
$hButton_1 = GUICtrlCreateButton("Func One", 10, 10, 80, 30)
;$hButton_2 = GUICtrlCreateButton("Func Two", 10, 50, 80, 30)
GUISetState()
GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hButton_1
            Switch GUICtrlRead($hButton_1)
                Case "Func One"
                    GUICtrlSetData($hButton_1, "Func Two")
                    _Func_1()
                    If GUICtrlRead($hButton_1) = "Func Two" Then
                        _Func_2()
                    EndIf
                Case "Func Two"
                    GUICtrlSetData($hButton_1, "Func One")
            EndSwitch
    EndSwitch
WEnd

Func _Func_1()
    $fInterrupt = 0
    For $i = 1 To 20
        ConsoleWrite("-Func 1 Running - " & $i & @CRLF)
        If $fInterrupt <> 0 Then
            ConsoleWrite("!Func 1 interrrupted by Func 2" & @CRLF)
            Return
        EndIf
        Sleep(100)
    Next
    ConsoleWrite(">Func 1 Ended" & @CRLF)
    GUICtrlSetData($hButton_1, "Func One")
EndFunc   ;==>_Func_1

Func _Func_2()
    For $i = 1 To 3
        ConsoleWrite("+Func 2 Running" & @CRLF)
        Sleep(100)
    Next
    ConsoleWrite(">Func 2 Ended" & @CRLF)
EndFunc   ;==>_Func_2

Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    If BitAND($wParam, 0x0000FFFF) = $hButton_1 Then
        If GUICtrlRead($hButton_1) = "Func Two" Then
            $fInterrupt = 1
        EndIf
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_COMMAND

Good luck incorporating that into your script! ;)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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:

  Reveal hidden contents

 

Posted (edited)

Thanks, hope everything goes fine :)

EDIT: All fine, some difficulties but at the end work, thanks Melba

Edited by johnmcloud
  • Moderators
Posted

johnmcloud,

Glad it worked for you. :)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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:

  Reveal hidden contents

 

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
×
×
  • Create New...