water Posted February 4, 2015 Share Posted February 4, 2015 Just to be clear by "AdLibRegister was able to register the function" you means it found the window, or that its run trhough the function? With AdLibRegister you tell AutoIt to call a function every x milliseconds. AdLibRegister returns 1 (success) when the function you specifies exists. It doesn't tell you that the function was executed, just that it was registered successfully. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
Moderators Solution SmOke_N Posted February 4, 2015 Moderators Solution Share Posted February 4, 2015 (edited) I'm not sure if I understand all of what is being asked. It sounds like the app is hung up during all of the processing and you're just waiting for it to become usable again. Then it's you and water testing different things and I start to lose site of the original question. Anyway, I'll just throw this in, there's an api call IsHungWindow that may come in handy for it... wrapping it around a timer function could help your endeavor... something like: #include <WinAPISys.au3> Func _WaitForNotHung($hWnd, $iTimeOutSeconds = Default) ; default = no timeout waiting ; best to pass a hwnd than to go through all this no? If Not IsHWnd($hWnd) Then $hWnd = WinGetHandle($hWnd) If Not IsHWnd($hWnd) Then $hWnd = HWnd($hWnd) If Not IsHWnd($hWnd) Then Return SetError (1, 0, 0) EndIf EndIf EndIf $iTimeOutSeconds = ((IsKeyword($iTimeOutSeconds) Or _ $iTimeOutSeconds > 0) ? 0 : ($iTimeOutSeconds * 1000)) Local $iTimer = TimerInit() While _WinAPI_IsHungAppWindow($hWnd) Sleep(250) If $iTimeOutSeconds And TimerDiff($iTimer) > $iTimeOutSeconds Then Return SetError(1, 0, 0) EndIf WEnd Return 1 EndFunc This could eliminate the need for adlibregister/unregister. But this will wait for that window to become un-hung indefinitely if a timer is not set ahead of time. Edited February 4, 2015 by SmOke_N fixed ternary output Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
water Posted February 4, 2015 Share Posted February 4, 2015 Edit: I was digging around and after searching different functins i found the Func...Return...EndFunc shouldn't i use this instead of adlib register? I mean it could theoraticly be like that i call a function which always return 0 for example untill he doesn't find the window, then it returns 1 and that is the signal/flag for UD_informaciok to pop a window of complete! and return the entire thing in to idle AdLibRegister was used because WinWaitActive can't be interrupted. You wanted to display a GUI while waiting for a Window to exist PLUS the ability for the user to cancel the process anytime. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
SorryButImaNewbie Posted February 4, 2015 Author Share Posted February 4, 2015 I tink I get it, that would explain why all my previus tries went wrong expandcollapse popupFunc Figyelmeztetes() Local $ans If Not WinExists("UD Operátor") Then MsgBox(0, "Üzenet", "Kérem nyissa meg az UD_OPER programot!", 10) Return EndIf $ans = MsgBox(4, "Üzenet", "Ez a lekérdezés több mint 10 percig is eltarthat!" & @CRLF & "Kívánja futtatni?") If $ans = 6 Then UD_informaciok() If $ans = 7 Then Return EndFunc ;==>Figyelmeztetes Func UD_informaciok() ;Local $bWindowFound = False Local $checkwindow = 0 ControlClick("UD Operátor", "", "[CLASSNN:TAdvBitBtn6]") WinWaitActive("Dátum beállítás", "") ControlClick("Dátum beállítás", "", "[CLASSNN:TBitBtn1]") AdlibRegister("_CheckWindow", 1000) While True Switch AdlibRegister("_CheckWindow", 1000) Case 0 ExitLoop ;goes back to While True loop Case 1 Return ;goeas back to idle, ready for the next order or anything EndSwitch WEnd #cs While True If AdlibRegister("_CheckWindow", 1000) = 1 Then $checkwindow = 1 If $checkwindow = 1 Then MsgBox(0, "Test", "Window found") AdlibUnRegister("_CheckWindow") Return EndIf WEnd #ce EndFunc ;==>UD_informaciok Func _CheckWindow() Local $sTitle = "Információk" If WinExists($sTitle) Then MsgBox(0, "Üzenet", "Lekérdezés kész", 10) ;meaning: "Message", "Query complete" AdlibUnRegister("_CheckWindow") EndIf EndFunc ;==>_CheckWindow i switched to this, right now, and the results were kind of the same (it returned idle as i wanted to so its better ) Link to comment Share on other sites More sharing options...
SorryButImaNewbie Posted February 4, 2015 Author Share Posted February 4, 2015 Thnaks SmOke_N I will look into it! Well I'm not sure if my original goal had anypoint at all, I mean once we started the query the user cant really interrupt it using my scripts, I try to teach my script to find the window when it pops up and tell the user that now he can continue to do what ever, and till then "froze" my script to somehow so they dont try to cummunicate with the program since its unresponsive mostly while its working on this specific thing. Thus if i allowe my user to return idle and start other function while the program its working on is still trying to geather the query I just invite errors left and right! Pls tell me if my logic flow is incorrect, or if you think i should set different goals Link to comment Share on other sites More sharing options...
water Posted February 4, 2015 Share Posted February 4, 2015 What is this line supposed to do? Switch AdlibRegister("_CheckWindow", 1000) My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
SorryButImaNewbie Posted February 4, 2015 Author Share Posted February 4, 2015 (edited) When I wrote this I still thought that Adlib returns 1 when it found the window, now that isn't sounding that possible, since it doesn't really understand what's the function is doing there, and _CheckWindow doesnt have any return value Edit: I tried to build it according to the help file, it used @HOUR for it there and basicly did something similar Edited February 4, 2015 by SorryButImaNewbie Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted February 4, 2015 Moderators Share Posted February 4, 2015 If you want to tell the user if a window is able to be used, use the _WinAPI_IsHungAppWindow method (you don't really need the wrapper I wrote). As far as intervals in checking, well it seems you and water have that under control. Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
SorryButImaNewbie Posted February 4, 2015 Author Share Posted February 4, 2015 (edited) I'm not sure if I understand all of what is being asked. It sounds like the app is hung up during all of the processing and you're just waiting for it to become usable again. Then it's you and water testing different things and I start to lose site of the original question. code This could eliminate the need for adlibregister/unregister. But this will wait for that window to become un-hung indefinitely if a timer is not set ahead of time. I dont blame you for that Master Smoke_N , I'm not sure I would be able to follow from the start while every 2 comment is mine There wasn't really an original question but an aim. Master Water here tries to help me and i learn (i hope so) with every turn basicly for which im thankful. Also I think this API could be just the thing that solve the problem, I'm not sure that the window is totaly unresponsive all the time, but there could be an innate defense in the program not to allow the users to do things while it works, basicly just like what i wanted to do, and this way I could just follow their (the other coders) original solution basicly! Edited February 4, 2015 by SorryButImaNewbie Link to comment Share on other sites More sharing options...
SorryButImaNewbie Posted February 4, 2015 Author Share Posted February 4, 2015 Thank you guys, fit like gloves! (and special thanks for Master Water, for his patience ) Link to comment Share on other sites More sharing options...
water Posted February 4, 2015 Share Posted February 4, 2015 Glad to be of service My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki 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