Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Czy mogę włączyć pauze w skrypcie ?


Rekomendowane odpowiedzi

Opublikowano

Witam, czy w AutoIT jest mogę po wciśnieciu np. przycisku pauza zatrzymać skrypt?, i ponownym wciśnieciu uruchomić od miejsca zatrzymania

 

poniżej prosty skrypt w którym chciałbym za pomocą gorącego klawisza zatrzymać

 

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <ScreenCapture.au3>
 
HotKeySet("{end}","myExit")
$Form1 = GUICreate("LICZNIK ", 300, 100, 1350, 700)
$Button1 = GUICtrlCreateButton("Start", 100, 15, 100, 35)
$label1 = GUICtrlCreateInput("", 120, 60, 60, 20, $ES_NUMBER)
$Label2 = GUICtrlCreateLabel("Powtórzenie "&" 0", 10, 10,70, 75)
 
GUISetState(@SW_SHOW, $Form1)
WinSetOnTop("LICZNIK" , "", 1)
 
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ;zamyka program
Exit
 Case $Button1 ;jeżeli kliknie Start
sleep(20) ; po wcisnieciu poczekaj chwile
 For $c=1 to GUICtrlRead($label1) ; to uruchamia sie cykl
GUICtrlSetData($Label2, "Powtórzenie " &$c)
;--------------------------------------------------------
PrzykladowaFunkcja()
 
Next
EndSwitch
WEnd
;-----------------------------------------------------------------
Func PrzykladowaFunkcja()
 MouseClick("left", 800,500,1,10)
Sleep(200)
MouseClick("left", 800,400,1,10)
EndFunc
;--------------------------------------------------------
Func myExit()
Exit
EndFunc

 

 

 
 
Opublikowano

Dodać hotkey pauzowania ( albo przycisk ) i zmienną globalną 

 

 
 HotKeySet("{JAKIŚ_KLAWISZ}", "Pause")
 

Global $bPaused = False

i funkcję

Func Pause()
    $bPaused = Not $bPaused

    While $bPaused
        Sleep(100)
    WEnd
EndFunc ;==>Pause

Nie możesz sobie zatrzymać kiedy chcesz i nie możesz sobie uruchomić w tym samym miejscu co było. 

W sumie możesz i robi się to ręcznie w tray na ikonce programu zatrzymując cały skrypt. 

 

 

Można przebudować tak skrypt ( np w formie jednej funkcji z zawartymi funkcjami )  żeby wszystko w nim zawarte zatrzymywało się i wznawiało działanie. 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

Można. Oto działający kod:

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <ScreenCapture.au3>

HotKeySet("{F9}", "Pause")
HotKeySet("{ESC}", "myExit")

Global $fWSK = False

HotKeySet("{end}","myExit")
$Form1 = GUICreate("LICZNIK ", 300, 100, 1350, 700)
$Button1 = GUICtrlCreateButton("Start", 100, 15, 100, 35)
$label1 = GUICtrlCreateInput("", 120, 60, 60, 20, $ES_NUMBER)
$Label2 = GUICtrlCreateLabel("Powtórzenie "&" 0", 10, 10,70, 75)

GUISetState(@SW_SHOW, $Form1)
WinSetOnTop("LICZNIK" , "", 1)

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE ;zamyka program
         Exit
      Case $Button1 ;jeżeli kliknie Start
         sleep(20) ; po wcisnieciu poczekaj chwile
         For $c=1 to GUICtrlRead($label1) ; to uruchamia sie cykl
            GUICtrlSetData($Label2, "Powtórzenie " &$c)
            PrzykladowaFunkcja()
        Next
   EndSwitch
WEnd
;-----------------------------------------------------------------
Func PrzykladowaFunkcja()
   MouseClick("left", 800,500,1,10)
   Sleep(200)
   MouseClick("left", 800,400,1,10)
EndFunc
;--------------------------------------------------------
Func myExit()
   Exit
EndFunc
;--------------------------------------------------------
Func Pause()
   $fWSK = Not $fWSK
   If $fWSK Then
      ConsoleWrite("Skrypt zatrzymany!" & @CRLF)
      While $fWSK
         Sleep(50)
      WEnd
   Else
      ConsoleWrite("Skrypt wznowiony!" & @CRLF)
   EndIf
EndFunc

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...