Tobias092 Posted August 24, 2019 Share Posted August 24, 2019 Hello nice to meet you, my name is Tobias. Iam new to autoit and working now since 4 weeks on my little tool that should help me to automate my daily business work. Iam working at data analyse and wish to automize some daily tasks for me. Unfortunately, the software that i need to use at my work is only remoted displayed. So iam unable to use any button classes or something like that so trigger the buttons. I have invested 2 weeks for imagesearch function (its working now very well). Basicly i have createt a GUI with tabs which include some nessesary settings. I want to automize some really basic stuff.. Now i stuck with some steps with the script, i need your help and i hope you can help me out.. 1. The script wont stop when pressing "stop" -> the main script always run and run, wont stop when pressing "stop" button - is there a way to stop it immediately or any other workaround? 2. the while loop at main function dont work -> after the called function is function is finished it stops and close my GUI - WHY? I hope you can help me out! here is the basic code.. expandcollapse popup#include <MsgBoxConstants.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GUIConstants.au3> #include <Date.au3> #include "_ImageSearch.au3" #include "_ImageSearch_Debug.au3" #include <WinAPI.au3> ;arrays Global $WHATTODO[2] = ["Excel Convert", "BL Daily Analyse"] $sList = "" For $i = 0 To UBound($WHATTODO) - 1 $sList &= "|" & $WHATTODO[$i] Next #Region ### START Koda GUI section ### Form=c:\users\tobias\desktop\bot\gui\form3_1.kxf $Form1_1 = GUICreate("Dailys Tasks Automize", 401, 601, 290, 220) GUISetBkColor(0xE3E3E3) $Button1 = GUICtrlCreateButton("Run", 64, 512, 121, 41) $Button2 = GUICtrlCreateButton("Stop", 211, 512, 121, 41) $Log=GUICtrlCreateEdit("", 64, 360, 265, 129, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL)) $Tab1 = GUICtrlCreateTab(0, 0, 393, 337) $TabSheet1 = GUICtrlCreateTabItem("Main") $Label2 = GUICtrlCreateLabel("SELECT WHAT TO DO", 139, 132, 114, 17) $Combo1_GM = GUICtrlCreateCombo("Combo1", 104, 160, 185, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) GUICtrlSetData($Combo1_GM, $sList) ;weiße dropdown die werte zu $Combo2 = GUICtrlCreateCombo("Combo1", 108, 89, 185, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) GUICtrlCreateTabItem("") GUISetState(@SW_SHOW) GUICtrlSetState($Button2,$GUI_DISABLE) GUICtrlSetState($Button1,$GUI_ENABLE) #AutoIt3Wrapper_Compile_Both=y ;ist notwendig #AutoIt3Wrapper_UseX64=y ;ist notwendig #EndRegion ### END Koda GUI section ### $sOSArch = @OSArch ;Check if running on x64 or x32 Windows ;@OSArch Returns one of the following: "X86", "IA64", "X64" - this is the architecture type of the currently running operating system. ConsoleWrite("$sOSArch=" & $sOSArch & @CR) $sAutoItX64 = @AutoItX64 ;Check if using x64 AutoIt ;@AutoItX64 Returns 1 if the script is running under the native x64 version of AutoIt. ConsoleWrite("$sAutoItX64=" & $sAutoItX64 & @CR) Global $window = WinGetHandle("Data Analyse LVS Logistic") ;activate program window ;Global $running = false Global $runner $runner = false If Not IsDeclared($runner) Then Global $runner While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE GUISwitch($Form1_1);wechsel zum GUI GUIDelete() Exit Case $msg = $Button1;start GUICtrlSetState($Button1,$GUI_DISABLE) GUICtrlSetState($Button2,$GUI_ENABLE) sleep(100) $runner = true sleep(100) StartStop();start function startup Case $msg = $Button2;stop GUICtrlSetState($Button2,$GUI_DISABLE) GUICtrlSetState($Button1,$GUI_ENABLE) sleep(100) $runner = False sleep(100) StartStop() EndSelect WEnd Func StartStop() If ($runner = true) Then sleep(200) startup() Else $runner = False sleep(200) _WriteLineToLog("Stop Analysis after this task..") EndIf EndFunc Func _WriteLineToLog($Log_String_WriteLineToLog) GUICtrlSetData($Log, _NowCalc() & " - " & $Log_String_WriteLineToLog & @CRLF, 1) Endfunc ;-----------------------------STARTUP---------------------------------------- Func startup() Opt("PixelCoordMode", 2) $window = WinGetHandle("Data Analyse LVS Logistic") $login = 0 $loginwhile = 0 $program = "D:\Program Files\Data Logistic\bin\LVS.exe" If ProcessExists("LVS.exe") Then _WriteLineToLog("detected running LVS") sleep(2000) Else ; starte program Run($program) WinWait("Data Analyse LVS Logistic") sleep(5000) EndIf excelconvert() EndFunc ;----------------------------START AUTOMIZE TASK Func excelconvert() Opt("PixelCoordMode", 2) $window = WinGetHandle("Data Analyse LVS Logistic") $Running = 0 While $Running = 0 ;do tasks... ;if task finished $Running =+1 ...... WEnd EndFunc Func analysedata() $Running = 0 While $Running = 0 ;do tasks... ;if task finished $Running =+1 ...... EndFunc Func _Exit() Exit EndFunc ;==>_Exit Link to comment Share on other sites More sharing options...
Nine Posted August 24, 2019 Share Posted August 24, 2019 It is normal since the script is caught in a while..wend loop. Pressing a GUI button won't interrupt the processing unless you change the GUI into Opt("GUIOnEventMode", 1). “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Multi-Threading Made Easy Link to comment Share on other sites More sharing options...
Tobias092 Posted August 26, 2019 Author Share Posted August 26, 2019 (edited) Hello Nine, thank you for reply. I have already tryed it. For example, here it work perfect, the script stop when pressing stop button: expandcollapse popup#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <ProgressConstants.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode",1) Global $Stop = True Global $x = 1, $i = 0 #Region ### START Koda GUI section ### Form= Global $Form1 = GUICreate("Form1", 579, 212, 192, 124) Global $Button1 = GUICtrlCreateButton("Stop", 432, 136, 75, 25) Global $Button2 = GUICtrlCreateButton("Start", 96, 136, 75, 25) Global $Progress1 = GUICtrlCreateProgress(24, 40, 526, 49) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### GUISetOnEvent ($GUI_EVENT_CLOSE, "_exit",$Form1 ) GUICtrlSetOnEvent($Button2,"_Start") GUICtrlSetOnEvent($Button1,"_Stop") While 1 While $Stop = False $i += $X GUICtrlSetData($Progress1,$i) Sleep(80) if $i = 105 Then $X = -1 if $i = 0 Then $X = 1 WEnd Sleep(80) WEnd Func _Stop () $Stop = True EndFunc Func _exit () Exit EndFunc Func _Start () $Stop = False EndFunc But my version wont stop, i start a function on start button: expandcollapse popup#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <ProgressConstants.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode",1) Global $Stop = True Global $x = 1, $i = 0 #Region ### START Koda GUI section ### Form= Global $Form1 = GUICreate("Form1", 579, 212, 192, 124) Global $Button1 = GUICtrlCreateButton("Stop", 432, 136, 75, 25) Global $Button2 = GUICtrlCreateButton("Start", 96, 136, 75, 25) Global $Progress1 = GUICtrlCreateProgress(24, 40, 526, 49) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### GUISetOnEvent ($GUI_EVENT_CLOSE, "_exit",$Form1 ) GUICtrlSetOnEvent($Button2,"_Start") GUICtrlSetOnEvent($Button1,"_Stop") While 1 WEnd func test() While $Stop = False $i += $X GUICtrlSetData($Progress1,$i) Sleep(80) if $i = 105 Then $X = -1 if $i = 0 Then $X = 1 WEnd endfunc Func _Stop () $Stop = True EndFunc Func _exit () Exit EndFunc Func _Start () $Stop = False test() EndFunc Can you please explain me why it doesnt work, using a function? Edited August 26, 2019 by Tobias092 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