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!
I'm trying to:
1) Open a hidden browser session
2) Do some stuff in the background
3) Make the hidden window visible
This is my code:
Opt("WinTitleMatchMode", 2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase $oIE = _IECreate("https://www.google.co.uk/",0,0) $oSearchBox = _IEGetObjById($oIE, "lst-ib") $oSearchBox.innertext = "AutoIT" $oForm = _IEFormGetObjByName($oIE,"f") _IEFormSubmit($oForm) WinSetState("Google","",@SW_SHOW)
It dosen't work
The last line does make the window visible but it is an empty greyed out box that disappears as soon as I click on it.
I have a sort of workaround that hides the browser window as soon as I have created it which works fine:
$oIE = _IECreate("https://www.google.co.uk/") WinSetState("Google","",@SW_HIDE) . . . WinSetState("Google","",@SW_SHOW) But this looks a bit pants as the newly created window flashes on then off of the screen.
Am I using the wrong method to make the browser window visible?
I would like to know if I can use the Excel UDF to manipulating a .csv file without having Office installed on the PC I'm going to work...
I read somewhere that it could be done, but I'm here to ask and be sure of what I remember...
I'd like to post another question...
How can I retrieve the handle of a windows from a PID of an .exe?
I have my script that does a ShellExecute ( which returns the PID of the .exe ), and then, switching a parameter read from a .ini file, adapt the Window on the screen ( Maximize, Minimize, On Top )...
I tried, but without having success with this:
#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile_x64=prova.exe #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <MsgBoxConstants.au3> #include <AutoItConstants.au3> #include <WinAPIEx.au3> #include <Array.au3> Local $sFileConfigurazione = @ScriptDir & "\configurazione_exe.ini" If(FileExists($sFileConfigurazione)) Then Local $aSezioniIni = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_EXE") If @error Then MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file: " & @CRLF & $sFileConfigurazione & @CRLF & "Errore: " & @error) Else ; Lancio dell'applicativo indicato nel file di configurazione Local $iPID = ShellExecute($aSezioniIni) Local $hWnd If($iPID <> 0) Then Local $aWinList = WinList() For $i = 1 To $aWinList If(WinGetProcess($aWinList[$i] = $iPID)) Then $hWnd = $aWinList[$i] EndIf Next Switch($aSezioniIni) Case $aSezioniIni = "MIN" WinSetState($hWnd, "", @SW_MINIMIZE) Case $aSezioniIni = "MAX" WinSetState($hWnd, "", @SW_MAXIMIZE) Case $aSezioniIni = "TOP" WinSetOnTop($hWnd, "", $WINDOWS_ONTOP) EndSwitch EndIf EndIf EndIf It just set on top the .exe I'm launching...
#include <IE.au3> _IECreate("www.google.com") Sleep(5000) WinSetState("Google - Internet Explorer","",@SW_MAXIMIZE) The browser window opens and it goes to google.com but it will not maximize. I have also tried:
#include <IE.au3> Local $Browser = _IECreate("www.google.com") Sleep(5000) WinSetState($Browser,"",@SW_MAXIMIZE) Also doesn't work. I'm running windows 8.1 x64 and internet explorer 11.0.9600.16384. Help!
I have a program that when minimised to task-bar an using WinGetState returns 37. Maximised, enabled and exists?
Using WinSetState ("[CLASS:TfrmDesktop]", "", @SW_MAXIMIZE) returns 39. Maximised, enabled and exists and visible?
But will not maximise the window.
However 39 is what it normally is when maximised and using the program
Just using @SW_RESTORE = 7 but does not open window (obviously)
and using @SW_RESTORE then @SW_MAXIMIZE = 39 but then cant minimize.
and using @SW_RESTORE then @SW_MAXIMIZE then @SW_ENABLE = 39 but then cant minimize.
Tried this and nothing WinMove("[CLASS:TfrmDesktop]",0,0,@Desktopwidth, @DesktopHeight)
Really strange as not sure what else to try.