mlewis412 Posted February 10, 2015 Posted February 10, 2015 Hello guys & gals, So I was wondering if you could help me out with this script. I have two embedded browsers an am looking to have 2 functions. _Func_1 () will control $start which would be a loop that will continously refesh browser 1. _Func_2() will stop _Func_1(). Below is my attempt of what I am trying to accomplish, so any help would be greatly appreciated expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <IE.au3> Opt("GUIOnEventMode", 1) Example() Func Example() Local $idButton_Back, $idButton_Forward Local $idButton_Home, $idButton_Stop, $iMsg $oIE1 = _IECreateEmbedded() $oIE2 = _IECreateEmbedded() GUICreate("Browser Refresher",@DesktopWidth , @DesktopHeight,0,0) GUICtrlCreateObj($oIE1, 1, 1, 900, 360) GUICtrlCreateObj($oIE2, 950, 1, 900, 1000) $start = GuiCtrlCreateButton ("Start Refresher",10,450,100,30) GUICtrlSetOnEvent($start, "_Func_1") $stop = GuiCtrlCreateButton ("Stop Refresher",10,480,100,30) GUICtrlSetOnEvent($start, "_Func_2") GUISetState(@SW_SHOW) ;Show GUI $oIE1.navigate("https://login.salesforce.com/") $oIE2.navigate("https://login.salesforce.com/") EndFunc While 1 $iMsg = GUIGetMsg() Wend Func _Func_1() If $start = True Then $oIE1.refresh Sleep(10000) EndIf EndFunc Func _Func_2() If $stop = True Then Msg Box (0,"The Refresher has stopped", "The Refresher has stopped!") EndIf EndFunc
mlewis412 Posted February 10, 2015 Author Posted February 10, 2015 So I think I am getting closer, here is what I added: expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <IE.au3> Opt("GUIOnEventMode", 1) Local $idButton_Back, $idButton_Forward Local $idButton_Home, $idButton_Stop, $iMsg $oIE1 = _IECreateEmbedded() $oIE2 = _IECreateEmbedded() $refresh = $oIE1.refresh $iMsg = GUIGetMsg GUICreate("Browser Refresher",@DesktopWidth , @DesktopHeight,0,0) GUICtrlCreateObj($oIE1, 1, 1, 900, 360) GUICtrlCreateObj($oIE2, 950, 1, 900, 1000) $start = GuiCtrlCreateButton ("Start Refresher",10,450,100,30) $oIE1.navigate("https://login.salesforce.com/") $stop = GuiCtrlCreateButton ("Stop Refresher",10,480,100,30) $oIE2.navigate("https://login.salesforce.com/") While 1 GUISetState(@SW_SHOW) ;Show GUI Switch $iMsg Case $iMsg = $start MsgBox (0,"Refresher has started", "Refresher has started") If $oDiv = _IEGetObjById($oIE1, "login") Then $refresh endswitch Wend
JohnOne Posted February 10, 2015 Posted February 10, 2015 I can tell you that you should not/can not use Opt("GUIOnEventMode", 1) and a GUIGetMsg loop. Also you have put that GUIGetMsg in a variable and are calling it without parenthesis And I'm not sure you can call an object method, from a variable like you do $refresh = $oIE1.refresh If $oDiv = _IEGetObjById($oIE1, "login") Then $refresh AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans.
mlewis412 Posted February 11, 2015 Author Posted February 11, 2015 John, Thanks for the input. I changed up the way to go about this. I have the refresh working now. but would it be possible to stop the do loop. I am looking but everything I try does not seem to work. Below is what I have now: expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <IE.au3> Local $idButton_Back, $idButton_Forward Local $idButton_Home, $idButton_Stop, $iMsg $oIE1 = _IECreateEmbedded() $oIE2 = _IECreateEmbedded() GUICreate("Browser Refresher",@DesktopWidth , @DesktopHeight,0,0) GUICtrlCreateObj($oIE1, 1, 1, 900, 360) GUICtrlCreateObj($oIE2, 950, 1, 900, 1000) $start = GuiCtrlCreateButton ("Start Refresher",10,450,100,30) $oIE1.navigate("https://login.salesforce.com/") $stop = GuiCtrlCreateButton ("Stop Refresher",10,480,100,30) $oIE2.navigate("https://login.salesforce.com/") While 1 GUISetState(@SW_SHOW) ;Show GUI Local $iMsg = GUIGetMsg() SELECT Case $iMsg = $GUI_EVENT_CLOSE ExitLoop Case $iMsg = $stop MsgBox (0,"Refresher has stopped", "Refresher has stopped") Case $iMsg = $start MsgBox (0,"Refresher has started", "Refresher has started") Do Sleep (10000) $oIE1.refresh Until $iMsg = $stop EndSelect Wend
Moderators Solution SmOke_N Posted February 11, 2015 Moderators Solution Posted February 11, 2015 Not a fan of how you have this setup.. but to solve your issue using your own code: Do $oIE1.refresh Until GUIGetMsg() = $stop Your issue. 1. You're in a loop, which has no access to GUIGetMsg() 2. GUIGetMsg() refreshes every 250 ms so your Sleep is killing it even if it did register 3. If you wanted wait for the msg, catch GUIGetMsg() from the second loop as demonstrated above and remove the sleep() (again, won't work with that sleep). Way I'd probably do it. 1. Create a function that uses global $oIE1.refresh 2. Use call function from 1. when it is pressed 3. Right after the function call use AdlibRegister for the function from 1. and set the timer for 10 seconds like you had with sleep 4. In stop area, use AdlibUnregister 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.
mlewis412 Posted February 11, 2015 Author Posted February 11, 2015 Thanks Smoke, I figured out a way using the HotKey now at this point. I really appreciate your input. Here is my final script! expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <IE.au3> Local $idButton_Back, $idButton_Forward Local $idButton_Home, $idButton_Stop, $iMsg HotKeySet("{F1}", "_Continue") Dim $binFlag = False $oIE1 = _IECreateEmbedded() $oIE2 = _IECreateEmbedded() $counter = False GUICreate("Browser Refresher",@DesktopWidth , @DesktopHeight,0,1,$WS_MAXIMIZEBOX) GUISetState() GUICtrlCreateObj($oIE1, 1, 1, 900, 360) GUICtrlCreateObj($oIE2, 950, 1, 900, 1000) $start = GuiCtrlCreateButton ("Start Refresher",10,450,100,30) $oIE1.navigate("https://login.salesforce.com/") $oIE2.navigate("https://login.salesforce.com/") While $counter = False GUISetState(@SW_SHOW) ;Show GUI Local $iMsg = GUIGetMsg() SELECT Case $iMsg = $GUI_EVENT_CLOSE ExitLoop Case $iMsg = $start MsgBox (0,"Refresher has started", "Refresher has started") Do Sleep (10000) $oIE1.refresh GUICtrlSetState ($start, $GUI_DISABLE) GUICtrlSetdata ($start, "Press F1 to Disable") Until $binFlag = True GUICtrlSetState($start, $GUI_ENABLE) GUICtrlSetdata ($start, "Start Refresher") EndSelect Wend Func _Continue() $binFlag = Not $binFlag EndFunc
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