Sign in to follow this  
Followers 0
Crazyace

_IECreate hidden IE Window in IE9 fails

18 posts in this topic

When I try simple code like

#include <IE.au3>
$oIE = _IECreate("http://sourceforge.net", 0, 0)

It fails to hide. Any ideas?


"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Bug submitted #2194

Edited by Crazyace

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Share this post


Link to post
Share on other sites

Looks fine to me on IE9, Win7, Au3 3.3.8.1 x64/x86.

You have to provide more details so other people can reproduce it.

AdmiralAlkex,

Thats the problem, you can see it :-) With the options that I'm using it should be hidden :-)


"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

AdmiralAlkex,

When I try to run it from SciTE4AutoIt3 I get this error in the Console

C:Program FilesAutoIt3IncludeIE.au3 (560) : ==> The requested action with this object has failed.:
WEnd
WEnd^ ERROR

My test file

#cs ----------------------------------------------------------------------------


AutoIt Version: 3.3.8.1
Author:      myName

Script Function:
Template AutoIt script.


#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here


#include <IE.au3>

$oIE = _IECreate("http://sourceforge.net", 0, 0)
Edited by Crazyace

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Share this post


Link to post
Share on other sites

That's a different problem than the original problem.

I ran your code on my system, Win 7 x64 and IE 8 (no access to IE9 here) and it works without a problem, the IE window is hidden.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

That's a different problem than the original problem.

I ran your code on my system, Win 7 x64 and IE 8 (no access to IE9 here) and it works without a problem, the IE window is hidden.

Thanks for your reply BrewManNH. The system I'm using is Windows 7 x86 and I'm going to try uninstalling IE9 and try IE8. I tried the same code on my other desktop that has IE9 and WIndows 7 x64 and it did the same thing.

Any ideas about the error in the console?


"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Share this post


Link to post
Share on other sites

I tested with IE8 now and I still have the same issue ;)


"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Share this post


Link to post
Share on other sites

#10 ·  Posted

Which issue? It isn't hidden or the Wend error message?


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

#11 ·  Posted

The Wend seems to be the issue causing it not to hide for me. The IE.au3 file has not been touched by me.


"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Share this post


Link to post
Share on other sites

#13 ·  Posted

I haven't tried Beta, but I did reinstall AutoIT on my desktop system and it works fine with IE9. I'm going to see if reinstalling on my laptop will resolve the issue for me.


"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Share this post


Link to post
Share on other sites

#14 ·  Posted

I just reinstalled AutoIT and installed the full version of SciTE. I tried to run the file again and it still fails.

>"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:Usersjeff_tincherDesktopAU3 AutoSweettest.au3" /UserParams   
+>13:43:39 Starting AutoIt3Wrapper v.2.1.0.8    Environment(Language:0409  Keyboard:00000409  OS:WIN_7/Service Pack 1  CPU:X64 OS:X86)
>Running AU3Check (1.54.22.0)  from:C:Program FilesAutoIt3
+>13:43:39 AU3Check ended.rc:0
>Running:(3.3.8.1):C:Program FilesAutoIt3autoit3.exe "C:Usersjeff_tincherDesktopAU3 AutoSweettest.au3"   
C:\Program Files\AutoIt3\Include\IE.au3 (560) : ==> The requested action with this object has failed.:
WEnd
WEnd^ ERROR
->13:43:39 AutoIT3.exe ended.rc:1
>Exit code: 1    Time: 1.576

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Share this post


Link to post
Share on other sites

#15 ·  Posted

I think it's related to a Trak issue that's been reported previously, not sure if there's a work-around yet.

1 person likes this

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

#16 ·  Posted

I just tried AutoIT beta and 1/2 of it works. When I launch the code it starts 3 iexplore.exe processes and shows the webpage.

I changed the code to:

#include <IE.au3>

$oIE = _IECreate("www.google.com", 0, 0)
Sleep(5000)
_IEQuit($oIE)

I noticed that the _IEQuit never kills the process. If I close the process via task manager when I open IE I get - "Your last browsing session closed unexpectedly"


"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Share this post


Link to post
Share on other sites

#17 ·  Posted

Posting info from my desktop that the code works fine on.

>"C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:UsersJeffDesktopNew AutoIt v3 Script.au3" /UserParams   
+>14:03:15 Starting AutoIt3Wrapper v.2.1.0.8    Environment(Language:0409  Keyboard:00000409  OS:WIN_7/Service Pack 1  CPU:X64 OS:X64)
>Running AU3Check (1.54.22.0)  from:C:Program Files (x86)AutoIt3
+>14:03:15 AU3Check ended.rc:0
>Running:(3.3.8.1):C:Program Files (x86)AutoIt3autoit3.exe "C:UsersJeffDesktopNew AutoIt v3 Script.au3"   
+>14:03:21 AutoIT3.exe ended.rc:0
>Exit code: 0    Time: 6.999

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Share this post


Link to post
Share on other sites

#18 ·  Posted

I found out that it's that damn UAC that's causing an issue here.


"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Similar Content

    • Faalamva
      By Faalamva
      Hello,
      Let's take a simple example to illustrate my case.
      I open a webpage with the command _IECreate and I parse all its elements :
      #include <IE.au3> $oIE = _IECreate("http://www.york.ac.uk/teaching/cws/wws/webpage1.html") $oElements = _IETagNameAllGetCollection($oIE) For $oElement In $oElements ConsoleWrite("Tagname: " & $oElement.tagname & @CRLF & "Id: " & $oElement.id & @CRLF & "InnerText: " & $oElement.innerText & @CRLF & "--------------------------------" & @CRLF) Next Now let's imagine I simulate a click with MouseClick to the link "lesson two" at the bottom of this webpage. A new webpage will open :
      http://www.york.ac.uk/teaching/cws/wws/webpage2.html
      I'd like to get the elements (tagname, id, innertext) of this new webpage, just like I got them for the first webpage. But for this, I presume I would have to get a new $oIE2 Object variable of an InternetExplorer.Application, in order to be able to use the _IETagNameAllGetCollection once again.
      How am I supposed to do this ?
      Thank you !
       
    • Faalamva
      By Faalamva
      Hi,
      I'm using the IE.au3 library to parse elements in a webpage and get their (x,y) coordinates.
      Main commands I'm using are :         
      $oIE = _IECreate($myWebPage) $oElements = _IETagNameGetCollection($oIE, "label") $windowleft = $oIE.document.parentwindow.screenLeft $windowtop = $oIE.document.parentwindow.screenTop $oElementPosX = $windowleft + _IEfindPosX($oElement) $oElementPosY = $windowtop + _IEfindPosY($oElement) Now things become a bit tricky when i simulate a scroll in my webpage :
      $oIE.document.parentwindow.scroll(0, $myScrollY) Because once this is done, the coordinates of the elements are still what they were before the scroll.
      I can manage this problem by keeping track of the number of pixels I have scrolled, and compute the new "real" ($oElementPosX, $oElementPosY).
      But I'm pretty sure there's a more efficient / more elegant way to do it.
      What's more in some situations, when I click some controls in the webpage, the webpage adds new elements and shifts the controls below by a random number of pixel, so my workaround can't be used...
      So here's my question : Is there a way to "refresh" the calculation of label coordinates ($oElementPosX, $oElementPosY) after a scroll ?
      Thank you !
      EDIT : I forgot to post the _IEfindPosX and _IEfindPosY functions (found somewhere on this forum) :
      Func _IEfindPosX($o_object) Local $curleft = 0 Local $parent = $o_object If IsObj($parent) Then While IsObj($parent) $curleft += $parent.offsetLeft $parent = $parent.offsetParent WEnd Else Local $objx = $o_object.x If IsObj($objx) Then $curleft += $objx EndIf Return $curleft EndFunc Func _IEfindPosY($o_object) Local $curtop = 0 Local $parent = $o_object If IsObj($parent) Then While IsObj($parent) $curtop += $parent.offsetTop $parent = $parent.offsetParent WEnd Else Local $objy = $o_object.y If IsObj($objy) Then $curtop += $objy EndIf Return $curtop EndFunc  
    • tarretarretarre
      By tarretarretarre
      Yet another IE UDF, but this time I "covered all angels" to make it as close to "embedded" as possible, the biggest inspiration came from Dale
      Anyway, one of the issues with the other "snipplets\UDF's" is that $WS_POPUP style will cause other Windows to overlap, even though you clicked on the GUI's "Embedded window". see picture:

      This issue is solved, but there is an option to disable it, if the user want
      One more small issue with others IE Embedded UDF's is that implementation should not be so much different than the original implementation was. I am not ranting, I am just speaking for my mind.
      So here we go:
      This is how the classic _IeCreateEmbedded() implementation goes down
      #include <IE.au3> Local $hGUI = GUICreate("_IECreateEmbedded", 800, 600) Local $oIE = _IECreateEmbedded() GUICtrlCreateObj($oIE, 0, 0, 800, 600) GUISetState() _IENavigate($oIE, "https://www.google.se") While GUIGetMsg() <> - 3 wend and this is how _IeCreateEmbedded2() is implemented
      #include <IE.au3> #include <_IECreateEmbedded2.au3> Local $hGUI = GUICreate("_IECreateEmbedded", 800, 600) Local $oIE = _IEEmbedded2_Create($hGUI, 0, 0, 800, 600) GUISetState() _IENavigate($oIE, "https://www.google.se") While GUIGetMsg() <> - 3 wend The only downside with this implementation is that _IECreateEmbedded2() is not an GUI control, it only has our Com Object, so I added basic manipulation.
      I will change \ add more options based on user requests or if I feel like it.
      _IEEmbedded2_Move($iLeft, $iTop, $iWidth = Default, $iHeight = Default) ;Similar to AutoIT's WinMove _IEEmbedded2_Hide() _IEEmbedded2_Show()
      Here is a GUI example with different options, so you can test some of the functionality
       Example.au3
      #include <_IEEmbedded2.au3> Local $hGUI = GUICreate("_IEEmbedded2 Example Gui", 1575, 600) Local $iDMove = GUICtrlCreateButton("Move", 0, 0, 225, 50) Local $iDHide = GUICtrlCreateButton("Hide", 225, 0, 225, 50) Local $iDShow = GUICtrlCreateButton("Show", 450, 0, 225, 50) Local $iDnav = GUICtrlCreateButton("Navigate", 675, 0, 225, 50) Local $iDestroy = GUICtrlCreateButton("Destroy", 900, 0, 225, 50) Local $iDCreate = GUICtrlCreateButton('Create with ($iCmdLine = "-extoff -private")', 1125, 0, 225, 50) Local $iDCreateNoWsChildOnBlur = GUICtrlCreateButton("Create with ($iWsChildOnBlurMS = 0)", 1350, 0, 225, 50) Local $oIE = _IEEmbedded2_Create($hGUI, 0, 50, 1575, 550, "http://www.google.se/", Default, Default, Default) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _IEQuit($oIE) Exit Case $iDMove _IEEmbedded2_Move(Random(0, 10, 1), Random(50, 60, 1)) If @error Then MsgBox(0, "Error", "Failed to move window") Case $iDHide _IEEmbedded2_Hide() If @error Then MsgBox(0, "Error", "Failed to hide window") Case $iDShow _IEEmbedded2_Show() If @error Then MsgBox(0, "Error", "Failed to show window") Case $iDnav If IsObj($oIE) Then _IENavigate($oIE, "https://www.autoitscript.com/site/") Else MsgBox(0, "Error", "Failed to navigate") EndIf Case $iDestroy If IsObj($oIE) Then _IEQuit($oIE) ___IEEmbedded2_Data(0, 0, 0, 0); only required if $iWsChildOnBlurMS = 0 Else MsgBox(0, "Error", "Failed to destroy object.") EndIf Case $iDCreate Local $tmpOie = _IEEmbedded2_Create($hGUI, 0, 50, 1575, 550, "https://www.google.com/", "-extoff -private", Default, Default) If Not @error Then $oIE = $tmpOie Else MsgBox(0, "Error", "Failed to _IEEmbedded2_Create, error code: "&@error) EndIf Case $iDCreateNoWsChildOnBlur Local $tmpOie = _IEEmbedded2_Create($hGUI, 0, 50, 1575, 550, Default, Default, Default, 0) If Not @error Then $oIE = $tmpOie Else MsgBox(0, "Error", "Failed to _IEEmbedded2_Create, error code: "&@error) EndIf EndSwitch WEnd
       _IEEmbedded2.au3
      #include-once #include <IE.au3> #include <WinAPI.au3> #include <GuiConstants.au3> Opt("WinWaitDelay", 1) ; #FUNCTION# ==================================================================================================================== ; Name ..........: _IEEmbedded2_Create ; Description ...: Creates an "embedded Internet Explorer window" for a parent window (E.ex GuiCreate), and returns a webbrowser object refrence which can be used with _IE* Functions ; Syntax ........: _IEEmbedded2_Create($hWndParent, $iLeft, $iTop, $iWidth, $iHeight, $iCmdLine = Default, $iTimeoutMS = Default, $iWsChildOnBlurMS = Default) ; Parameters ....: $hWndParent - The handle of the window you would like to embed internet explorer in ; $iLeft - X1 ; $iTop - Y1 ; $iWidth - X2 ; $iHeight - Y2 ; $iDefaultPage - [optional] Default page on launch, _IeNavigate will be used as soon as the object exists and the script does not wait for the page to load (Default = about:blank) ; $iCmdLine - [optional] Parameters passed when starting Iexplore, see remarks. (Default = "") ; $iTimeoutMS - [optional] Max wait time in milliseconds before SetError, se @error 5 and 6. (Default = 30000 ms) ; $iWsChildOnBlurMS - [optional] How often in milliseconds we want to make sure $hParrent does not get overlapped by other Windows gui's, set 0 to disable (Default = 100 ms) ; Return values .: Success - a Webbrowser object reference. ; Failure - 0 and sets @error to non zero. ; Author ........: TarreTarreTarre ; Modified.......: ; Remarks .......: Max 1 instance is allowed. ; ; Set $iWsChildOnBlurMS to 0 if you do not wish to have $hWndChild altered when the $hWndParent is not active, this will however cause other windows to overlap your Gui and more. ; Also, if $iAdlibCalltime is 0, you have to manually reset _IEEmbedded2_Createdata's data if you want to invoke _IEEmbedded2_Create again. ; Use ___IEEmbedded2_Data(0, 0, 0, 0) to reset data ; ; For $iCmdLine, these commands are avilable -extoff, -framemerging, -noframemerging, -nohangrecovery, -private, -nosessionmerging And -sessionmerging ; Read more about Command-Line Options at https://msdn.microsoft.com/en-us/library/hh826025(v=vs.85).aspx ; Link ..........: ; Example .......: ; @error ........: 1 - $hWndParent is not a valid window handle. ; 2 - Iexplore.exe not found. ; 3 - Another instance of _IEEmbedded2_ is already running. ; 4 - $iCmdLine is provided with invalid parameters ; 5 - Load Wait Timeout, was not able to retrive Iexplore.exe window handle. ; 6 - (IE >= 10 only) Load Wait Timeout, failed to force $hWndChild into a minimized state. ; 7 - Windows API error, check @extended for more information Func _IEEmbedded2_Create($hWndParent, $iLeft, $iTop, $iWidth, $iHeight, $iDefaultPage = Default, $iCmdLine = Default, $iTimeoutMS = Default, $iWsChildOnBlurMS = Default) $iDefaultPage = ($iDefaultPage == Default ? "about:blank" : $iDefaultPage) $iCmdLine = ($iCmdLine == Default ? "" : StringRegExpReplace($iCmdLine, "([a-zA-Z]*)\s*[-]{1}", "$1 -")) $iTimeoutMS = ($iTimeoutMS == Default ? 30000 : $iTimeoutMS) $iWsChildOnBlurMS = ($iWsChildOnBlurMS == Default ? 100 : $iWsChildOnBlurMS) Local $sIexplorePath = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE", "") Local $sUrl = StringFormat("about:blank#%s", Chr(Random(65, 90, 1)) & Random(1, 100, 1)) If Not IsHWnd($hWndParent) Then Return SetError(1, 0, 0) If Not FileExists($sIexplorePath) Then Return SetError(2, 0, 0) If ___IEEmbedded2_IsInited() Then Return SetError(3, 0, 0) If Not StringRegExp($iCmdLine, _ "^((|-extoff|-framemerging|-noframemerging|-nohangrecovery|-private|-nosessionmerging|-sessionmerging)\s*){1,}+$") Then Return SetError(4, 0, 0) Local $Pid = Run(StringFormat("%s -k %s %s", $sIexplorePath, $iCmdLine, $sUrl), "", @SW_HIDE) Local $Timeout = TimerInit() Local $_IEErrorNotify = _IEErrorNotify(False) Do Local $oIE = _IEAttach($sUrl, "url") If TimerDiff($Timeout) > $iTimeoutMS Then _IEErrorNotify($_IEErrorNotify) ProcessClose($Pid) Return SetError(5, 0, 0) EndIf Sleep(0) Until IsObj($oIE) _IEErrorNotify($_IEErrorNotify) Local $hWndChild = _IEPropertyGet($oIE, "hwnd") _WinAPI_MoveWindow($hWndChild, -1000, -1000, -1000, -1000, True) _IENavigate($oIE, $iDefaultPage, 0) ;IEVer >= 10 needs to be minimized or it will not disappear from the taskbar @ windows 7 32\64 bit & mby other win vers. If Int(FileGetVersion($sIexplorePath)) >= 10 Then Do WinActivate($hWndChild, "") WinSetState($hWndChild, "", @SW_MINIMIZE) If TimerDiff($Timeout) > $iTimeoutMS Then ProcessClose($Pid) Return SetError(6, 0, 0) EndIf Until WinGetState($hWndChild) == 23 ; $WIN_STATE_EXISTS + $WIN_STATE_VISIBLE + $WIN_STATE_MINIMIZED EndIf _WinAPI_SetParent($hWndChild, $hWndParent) _WinAPI_MoveWindow($hWndChild, $iLeft, $iTop, $iWidth, $iHeight, True) _WinAPI_SetWindowLong($hWndChild, $GWL_STYLE, $WS_POPUP + $WS_VISIBLE) If @error Then SetExtended(1, _WinAPI_GetLastError()) ProcessClose($Pid) Return SetError(7, 1, 0) EndIf Local $aDimensions = [$iLeft, $iTop, $iWidth, $iHeight] ___IEEmbedded2_Data($hWndParent, $hWndChild, $aDimensions, $iWsChildOnBlurMS) If $iWsChildOnBlurMS Then AdlibRegister("___IEEmbedded2_WsChildOnBlur", $iWsChildOnBlurMS) EndIf Return $oIE EndFunc ;==>_IEEmbedded2_Create ; #FUNCTION# ==================================================================================================================== ; Name ..........: _IEEmbedded2_Move ; Description ...: Moves a previously created _IEEmbedded2_Create window ; Syntax ........: _IEEmbedded2_Move($iLeft, $iTop, $iWidth = Default, $iHeight = Default) ; Parameters ....: $iLeft - X1 ; $iTop - Y1 ; $iWidth - X2 [optional] (Default = Original value) ; $iHeight - Y2 [optional] (Default = Original value) ; Return values .: Success - True ; Failure - 0 and sets @error to non zero. ; Author ........: TarreTarreTarre ; Modified.......: ; Remarks .......: Similar to AutoIt's WinMove ; Do not use this to "hide" objects, use _IEEmbedded2_Hide() instead ; Link ..........: ; Example .......: ; @error ........: 1 - _IEEmbedded2_Create is not invoked Func _IEEmbedded2_Move($iLeft, $iTop, $iWidth = Default, $iHeight = Default) Local $e = ___IEEmbedded2_Data() Local $hc = $e[1] Local $d = $e[2] Local $alr = $e[3] If Not IsHWnd($hc) Then Return SetError(1, 0, 0) $iWidth = ($iWidth == Default ? $d[2] : $iWidth) $iHeight = ($iHeight == Default ? $d[3] : $iHeight) _WinAPI_MoveWindow($hc, $iLeft, $iTop, $iWidth, $iHeight, True) Local $nd = [$iLeft, $iTop, $iWidth, $iHeight] ___IEEmbedded2_Data(Null, Null, $nd) If $alr Then AdlibRegister("___IEEmbedded2_WsChildOnBlur", $alr) Return True EndFunc ;==>_IEEmbedded2_Move ; #FUNCTION# ==================================================================================================================== ; Name ..........: _IEEmbedded2_Hide ; Description ...: Hides a previously created _IEEmbedded2_Create window ; Syntax ........: _IEEmbedded2_Hide() ; Parameters ....: ; Return values .: Success - True ; Failure - 0 and sets @error to non zero. ; Author ........: TarreTarreTarre ; Modified.......: ; Remarks .......: ; Link ..........: ; Example .......: ; @error ........: 1 - _IEEmbedded2_Create is not invoked Func _IEEmbedded2_Hide() Local $e = ___IEEmbedded2_Data() Local $hc = $e[1] If Not IsHWnd($hc) Then Return SetError(1, 0, 0) _WinAPI_MoveWindow($hc, 0, 0, 0, 0, True) AdlibUnRegister("___IEEmbedded2_WsChildOnBlur") Return True EndFunc ;==>_IEEmbedded2_Hide ; #FUNCTION# ==================================================================================================================== ; Name ..........: _IEEmbedded2_Show ; Description ...: Restore the window to its original size, a counter to _IEEmbedded2_Move() \ _IEEmbedded2_Hide() ; Syntax ........: _IEEmbedded2_Show() ; Parameters ....: ; Return values .: Success - True ; Failure - 0 and sets @error to non zero. ; Author ........: TarreTarreTarre ; Modified.......: ; Remarks .......: ; Link ..........: ; Example .......: ; @error ........: 1 - _IEEmbedded2_Create is not invoked Func _IEEmbedded2_Show() Local $e = ___IEEmbedded2_Data() Local $hc = $e[1] If Not IsHWnd($hc) Then Return SetError(1, 0, 0) Local $d = $e[2] Local $alr = $e[3] _WinAPI_MoveWindow($hc, $d[0], $d[1], $d[2], $d[3], True) If $alr Then AdlibRegister("___IEEmbedded2_WsChildOnBlur", $alr) Return True EndFunc ;==>_IEEmbedded2_Show #Region IECreateEmbedded2 Internals functions Func ___IEEmbedded2_Data($_hWndParent = Null, $_hWndChild = Null, $_aDimensions = Null, $_iWsChildOnBlurMS = Null) Local Static $hWndParent = 0 Local Static $hWndChild = 0 Local Static $aDimensions = 0 Local Static $iWsChildOnBlurMS = 0 If $_hWndParent <> Null Then $hWndParent = $_hWndParent If $_hWndChild <> Null Then $hWndChild = $_hWndChild If IsArray($_aDimensions) Then $aDimensions = $_aDimensions If $_iWsChildOnBlurMS <> Null Then $iWsChildOnBlurMS = $_iWsChildOnBlurMS Local $aRet = [$hWndParent, $hWndChild, $aDimensions, $iWsChildOnBlurMS] Return $aRet EndFunc ;==>___IEEmbedded2_Data Func ___IEEmbedded2_IsInited() Local $e = ___IEEmbedded2_Data() Return IsHWnd($e[1]) EndFunc ;==>___IEEmbedded2_IsInited Func ___IEEmbedded2_WsChildOnBlur() Local Static $p Local $c = 0 Local $e = ___IEEmbedded2_Data() Local $hp = $e[0] Local $hc = $e[1] If Not IsHWnd($hc) Then ___IEEmbedded2_Data(0, 0, 0, 0) Return AdlibUnRegister("___IEEmbedded2_WsChildOnBlur") EndIf If WinActive($hp) Or WinActive($hc) Then $c = 1 If $c And $p <> $c Then Local $gmp = _WinAPI_GetMousePos() Local $wfp = _WinAPI_WindowFromPoint($gmp) Local $gp = _WinAPI_GetParent($wfp) _WinAPI_SetWindowLong($hc, $GWL_STYLE, $WS_POPUP + $WS_VISIBLE) _WinAPI_UpdateWindow($hp) If $wfp <> $hp And $gp <> $hp Then WinActivate($hc) EndIf $p = $c ElseIf Not $c And $p <> $c Then _WinAPI_SetWindowLong($hc, $GWL_STYLE, $WS_CHILD + $WS_VISIBLE) _WinAPI_UpdateWindow($hp) $p = $c EndIf EndFunc ;==>___IEEmbedded2_WsChildOnBlur #EndRegion IECreateEmbedded2 Internals functions This is currently tested with (AutoIt v3.3.14.0):
      Windows 7 x86: Ie 8-9-10-11
      Windows 7 x64: Ie 8-9-10-11

      Error-report on this thread: IE version, @error code, Operationg system ex: (Windowx 10 64 bit)
       
      Trevlig Helg /Tarre
    • orichec
      By orichec
      Hello,
      I'm trying to save source of a particular webpage using its URL. When i tried to save source code using following command it works fine
      $IE = _IECreate( 'www.example.com', 0, 0 )
      But my problem is different I've saved different URL in my excel sheet, that's why, I tried to use "$IE" command in this way;
      $URL = _Excel_RangeCopyPaste($oWorkbook1.Activesheet, "C1")
      $IE = _IECreate($URL, 0, 0 )
      But It's unable to fetch source codes using URL placed in excel sheet 1 at cell No. "C1".
      Please guide me what's wrong with my codes and how can I make it possible to use URL placed in excel sheet instead of copying URL every time in "_IECreate" command.
      Thanks
      #RequireAdmin #include <Excel.au3> #include <IE.au3> #include <String.au3> #include <Array.au3> Local $oExcel = _Excel_Open() Local $oWorkbook1 = _Excel_BookOpen($oExcel, @ScriptDir & "\Software.csv", True) $file = fileopen(@scriptdir & "\source01.txt", 10) ;------------Below Command is not working--------------------- $URL = _Excel_RangeCopyPaste($oWorkbook1.Activesheet, "C1" ;------------String $IE unable to fetch data from URL available in excel sheet at cell No. "C1"--------------------- $IE = _IECreate($URL, 0, 0 ) $source = _IEDocReadHTML($IE) FileWrite($file, $source)  
    • Dgameman1
      By Dgameman1
      My program is super simple with only 2 lines of code.
      #include <IE.au3> $Site = _IECreate("www.google.com", 0, 1, 1) I'm just trying to open up a browser that goes to google.com
      The issue with this is that whenever I try and run the program, I get this error
      Not sure how to go about fixing this issue?