Search the Community
Showing results for tags 'winactivate'.
-
I have come across a weird issue that I am not sure how to solve. For some reason, whenever I call WinActivate in certain scenarios instead of opening the single window that already exists, it will create a new blank tab. It should be able to be recreated with this: AutoItSetOption("WinTitleMatchMode", 2) Sleep(1000) For $i=0 To 10 WinActivate("Internet Explorer") Next I am not actually doing this in my code, it is just to demonstrate the fact that new tabs keep popping up. Does anyone know why this happens? EDIT: So I am not sure how reproducible this is, because it only happens every once in a while for me. I will update with more info if I find out anything.
-
Hi all, I'm having some trouble restoring a program which uses a normal AutoIT-GUI and is used as a ToolKit for our customers to open different (external) tools, check their network connections or ping different destinations. Almost all customers are running this script on Win7 x64. What do I want to do? When the program is already running and the user tries to start it for a second time, it should exit the second instance after activating/restoring the first instance. What did I do to integrate this? I used a little piece of script found on the forums to prevent opening a second instance and modified it as follows: $g_szVersion = "VSOL ToolKit" If WinExists($g_szVersion) Then Local $gState = WinGetState($g_szVersion) MsgBox(0,"","gState = " & $gState) ;For debugging purposes WinSetState($g_szVersion,"",@SW_SHOW) MsgBox(0,"","gState = " & $gState) ;For debugging purposes WinSetState($g_szVersion,"",@SW_RESTORE) MsgBox(0,"","gState = " & $gState) ;For debugging purposes WinActivate($g_szVersion) Exit EndIf AutoItWinSetTitle($g_szVersion) I have tried it with only the @SW_SHOW, only the @SW_RESTORE, both of them in a different order, same difference, it doesn't work. What does happen then? It detects the current state (when it's minimized) as '5', which means enabled and hidden. After setting the state to show, the state changes to 7. Restoring doesn't change the state. But what is really odd, is that the window doesn't appear but AutoIt seems to create a néw window with the same title as the existing one. It doesn't matter if the window was originally minimized by clicking the minimize button in the GUI or by a line of code in my script. For example, when users open a software package from within my script, a similar function to this one will be called: Func VSOL_FFTOOLS_SHOW_DOWNLOADS() GUISetState(@SW_MINIMIZE,$VSOL_BACKEND) ShellExecute(@UserProfileDir & "\Downloads") EndFunc The only thing that does work, is when the window is running in a non-minimized state (somewhere behind the current window), it gets activated and receives the focus when trying to start the second instance. If anyone could help me out with this one, I'd be forever thankful :-) Thanks in advance! Kind regards, Jan Geurts
- 9 replies
-
- wingetstate
- winsetstate
-
(and 2 more)
Tagged with:
-
I have a script that opens an editor (Notepad) and inserts text into its window, but the text insertion fails. The WinActivate() does not always give focus to the newly loaded Notepad and the WinMenuSelectItem() fails. Here is my test file: #NoTrayIcon #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=THTracker.ico #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #AutoIt3Wrapper_UseX64=N #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** Opt('MustDeclareVars', 1) Opt("WinTitleMatchMode", -2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase _Main() Func _Main() add2editor("Line1" & @CRLF & "Line2" & @CRLF & "Line3" & @CRLF) EndFunc ;==>_Main Func add2editor($sOutput) Local $cmd, $hWnd, $ret, $title, $loopcnt, $maxcnt = 10 $cmd = "C:\windows\system32\notepad.exe" ConsoleWrite("Start the editor" & @CRLF) Run($cmd) $title = "Notepad" ConsoleWrite("Wait til the editor gui exists" & @CRLF) $loopcnt = 0 While (1) $ret = WinWait($title, "", 3) ConsoleWrite("+++:" & @ScriptLineNumber & ":[" & $loopcnt & "] $ret = " & $ret & @CRLF) $hWnd = $ret If ($ret <> 0) Then ExitLoop $loopcnt += 1 If ($loopcnt > $maxcnt) Then Exit Sleep(125) WEnd MsgBox(0, "A-" & @ScriptLineNumber, Hex($hWnd)) ConsoleWrite("Give focus to the editor" & @CRLF) $loopcnt = 0 While (1) $ret = WinActivate($hWnd) ConsoleWrite("+++:" & @ScriptLineNumber & ":[" & $loopcnt & "] @error = " & @error & ", $ret = " & $ret & @CRLF) $hWnd = $ret If ($ret <> 0) Then ExitLoop $loopcnt += 1 If ($loopcnt > $maxcnt) Then Exit Sleep(125) WEnd MsgBox(0, "B-" & @ScriptLineNumber, Hex($hWnd)) ConsoleWrite("Do a File -> New" & @CRLF) $loopcnt = 0 While (1) ; $ret = WinMenuSelectItem($hWnd, "", "&File", "New") ConsoleWrite("+++:" & @ScriptLineNumber & ":[" & $loopcnt & "] @error = " & @error & ", $ret = " & $ret & @CRLF) If ($ret = 1) Then ExitLoop $loopcnt += 1 If ($loopcnt > $maxcnt) Then Exit Sleep(125) WEnd MsgBox(0, "C-" & @ScriptLineNumber, Hex($hWnd)) ;Local $str = ClipGet() ; save whatever is in the clipboard Send("^a") ; select all existing text in the editor's window ConsoleWrite("put the new text into the clipboard" & @CRLF) ClipPut($sOutput) Send("^v") ; paste it into the editor's window ;;;ClipPut($str) ; restore the previous contents of the clipboard EndFunc ;==>add2editor
-
Hi, I'm trying to upload a file with a web browser but I can't select the Open File window to select the file that I want to upload. TL;DR I can't handle the Open File window of Chrome and MS Edge. AutoIt just doesn't find it by its title (in Firefox yes, but not on Chrome and MS Edge). With another software (Selenium Webdriver in Python) I access to a web page with a common HTML5 file uploader and I click on it, but when the Open File window comes up, I want to select a file and press Enter (write the filepath that I give and press Enter key or Open button). I have the idea, and I have the script on AutoIt too... but it doesn't work on Windows Edge and Chrome, only works on Firefox and Pale Moon (who are basically the same). Here is my code: #include <MsgBoxConstants.au3> $title = "Abrir" ; My Windows is in spanish, but I guess it's "Open" in English and it's the same code WinActivate($title) If WinActive($title) Then send("C:\Users\myuser\images\my_image.jpg") Send("{ENTER}") Else MsgBox($MB_SYSTEMMODAL, "WinActive", "Window not found.") EndIf In Firefox (and Pale Moon) the Open File window comes up, the file path is written and the Enter key is pressed. It works perfect. In Chrome and Edge, I never see the Open File window on top... and I neither see "Window not found" message (seems like AutoIt finds it but doesn't send keys). Edit: before to send this post, I started thinking again and... after several tests, I discovered one thing: when you select the window, in Firefox (and Pale Moon) the cursor goes to the combobox (where I have to put the text) and it's possible to write just after clicking (or opening, what in AutoIt it is "Activate" I guess) the window but in Chrome and Edge it isn't like that, when you click the window, the cursor doesn't go to the combobox. With that "discovery", I tried to select the combobox but... I failed again. And now I have no idea how to go ahead. #include <MsgBoxConstants.au3> $title = "Abrir" WinActivate($title) If WinActive($title) Then ControlClick($title, "", 1148) ; Still it does not work send("C:\Users\myuser\images\my_image.jpg") Send("{ENTER}") Else MsgBox($MB_SYSTEMMODAL, "WinActive", "Window not found.") EndIf
- 5 replies
-
- winactivate
- chrome
-
(and 3 more)
Tagged with:
-
Hello all I am trying to use this function to detect if a specific window is running. Then for it to activate it and send an ALT+F command to close the window. But I cannot seem to get it to detect the window and subsequently the rest of the code does not work. #include <MsgBoxConstants.au3> Handleit() Func Handleit() If WinExists("[CLASS:MsiDialogCloseClass]","InstallShield") Then WinActivate("[CLASS:MsiDialogCloseClass]","Installshield") Send("!f") Else MsgBox($MB_SYSTEMMODAL, "", "Uhhh... something didn't work. Fix it!") EndIf EndFunc Is there anything that I can substitute for the CLASS? Thank you for taking the time to read my question! -Richard
- 2 replies
-
- winexists
- winactivate
-
(and 1 more)
Tagged with:
-
Hello, I was wondering if it is possible to run more than one script at a time on different windows in order to emulate click and keyboard stroke. As far as I know, it's not possible to have several mouses, so I don't see how this could be achieved. For example, let's say I have a client in one window, and my internet browser in another window. I'd like to run one script on the client window, and another script on the navigator browser simultaneously. Is this possible ? Also how can I get the focus on my browser at the beginning of my script ? I tried winActivate("Mozilla"), without success. Regards.
- 1 reply
-
- focus
- winactivate
-
(and 2 more)
Tagged with:
-
I'm still trying to convert my ahk scripts to au3. I can't find out how to give focus to my Chrome window (or whatever window) if my GUI (created in autoit) is active. Did I miss something? This is my code: WinActivate("[CLASS:Chrome_WidgetWin_1]") WinWaitActive("[CLASS:Chrome_WidgetWin_1]") It activates Chrome but does not give it focus when my GUI is still visible or minimized at the taskbar. I see the Chrome window in front of me but I have to click in it to give it focus, (same if I only use the first line (WinActivate without WinWaitActive)) 1) How can I give focus to the chrome window in above case? 2) When chrome is minimized on the taskbar above code does not activate chrome. Is there a way to activate chrome when it is on the taskbar? I tried this code but it didn't work: WinSetState("[CLASS:Chrome_WidgetWin_1]", "", @SW_SHOW)
-
I am having some issues with what should be the simplest of scripts. I have a program that records internet tv. If the network drops for some reason, an error window pops up and it will not record anything that is scheduled from that point on until the error is closed. So if this occurs at night when I am sleeping, I could miss recording several tv shows. So here is what I have done. The error windows do not have a title so I am using the window text and WinGetHandle to close. Like this... while 1 sleep(100) if WinExists("","ネットワークに接続できません。") then $handle = WinGetHandle("","ネットワークに接続できません。") WinClose($handle) ;MsgBox(0, "WinGetHandle Result",$handle) EndIf Wend I have tested this out by manually creating the error window using this and the above script will close the window fine. MsgBox(0, "","ネットワークに接続できません。") When I force the program to throw the error by disconnecting my network cable, the error window comes up but never closes. I added the WinGetHandle Result msgbox to see if it was even detecting the window. It does display the proper handle, I confirmed it by using the AutoIt Window Info tool. I even tried this but it doesn't work either..... while 1 sleep(100) if WinExists("","ネットワークに接続できません。") then $handle = WinGetHandle("","ネットワークに接続できません。") WinActivate($handle) Send("{ESC}") ;MsgBox(0, "WinGetHandle Result",$handle) EndIf Wend Any suggestions?
- 13 replies
-
- winclose
- winactivate
-
(and 1 more)
Tagged with:
-
Hi Guys. You've all been extremely helpful to me so far. Anyways, I was wondering if there was a way to get winActivate working without using the actual title of the application. The problem for me is that the application I'm trying to script has a title that is constantly changing to indicate which version of a project the user is using. This means, I can't rely on the title to activate the window. I tried using a control ID of the window, but that didn't seem to work...
-
Hi friends, One of my script uses Winactivate to activate a window. The complete script works perfectly when I'm connected to the system or some one is loged into the system. But the WinActivate command does not work when I execute the script on a scheduled task when no one is connected to the system. The Script correctly unlocks the machine and executes the application but most of the time, fails to activate the window to receive the keys I send through the Send command. ;Execute the Time and attendcence application $_Temp = Run($sApplicationpath) Sleep(2000) WinActivate ( "Time and Attendance System 32","") WinWaitActive("Time and Attendance System 32","") ;Activate file menu by sending ALT+F send("!f") Sleep(1000) ;Activating Reports window by selecting the menu option Reports. send("r") Sleep(1000) WinActivate ( "Reports","") WinWaitActive("Reports","") I have tried MouseClick to click on the window to get activated and tried the WinActivate on a while loop until it get activated. But it all fails while working on a scheduled task. Do I have to do anything extra to get the window activate on a scheduled task, when no one is connected to the system? Thank you, Pooja.
-
Hey guys, I tried search but most of the topics are a bit too advanced for what I'm looking for, I'm just a simple hobbyist. Anyway, basically my friend constantly leaves his browser open and it really drives me crazy so I'm writing a simple program that, after the computer is out of use for 30 minutes, activates each browser, creates a bookmark folder with everything open, then kills the process. My problem is, the only way I know to activate a window is to use winactivate, but in order to use it properly I think I need to know the name of the window.. gmail, functions, etc etc etc.. and I just generally want to activate firefox or chrome and I don't really know how. I'll link my code to give anyone interested an idea of what I'm doing.. also, I just realized that if multiple windows exist I'll need to just use WinClose and use processexist to see if I need to loop again... I'll work on that. I'll get to that later, shouldn't be an issue. If you see any other problems with my code feel free, like I say I'm not a programmer by nature, mostly do engineering and physics sort of stuff so I apologize for my amateur writing. ;msgbox(0,"",$x[0],0) ;msgbox(0,"",$x[1],0) Func bookmark() WinActivate("Firefox", "Firefox") Send("{CTRLDOWN}{LSHIFT}d") Sleep(1500) Send(@mon&"."&@mday&"."&@hour&"."&@min&"."&"sec"&"{ENTER}") Sleep(1500) ProcessClose("firefox.exe") WinActivate("Chrome", "Chrome") Send("{CTRLDOWN}{LSHIFT}d") Sleep(1500) Send(@mon&"."&@mday&"."&@hour&"."&@min&"."&@sec&"{ENTER}") Sleep(1500) ProcessClose("chrome.exe") MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & ' ProcessClose("chrome.exe")' & @lf & @lf & 'Return:' & @lf & ProcessClose("chrome.exe")) ;### Debug MSGBOX ProcessClose("chrome.exe") EndFunc ;==>bookmark While 1 $old = MouseGetPos() $y = 1 While $y <> 2 Sleep(60000 * 0.25) $new = MouseGetPos() If $new[0] == $old[0] And $new[1] == $old[1] Then bookmark() EndIf $y = 2 WEnd WEnd