Jump to content

_IEAttach on _IECreateEmbedded performace issue.


milos83
 Share

Recommended Posts

I have one script that creates _IECreateEmbedded and another script that does _IEAttach.

I do this because when autoit is doing something, the Embedded IE starts stalling (eg jquery progress animation)

But there is a new problem.

When IE is having its own process (like in the example above) any _IE command is slow (in the script that Attaches).

Here is a comparison of when its in separate and when its in same process:

Separate process _IETagNameGetCollection : 5000ms

Separate process _IEAction: 850ms

Same process _IETagNameGetCollection : 1ms

Same proccess _IEAction: 135ms

 

If I try to attach to an embedded IE that is done in c#, I get lightning fast results.

As you can see, _IE functions work very slow when the embedded IE we are attaching to is made in Autoit.

 

I did a test and if I empty the WHILE loop in IE process I get these results(but the cpu is at 30% as expected):

Separate process _IETagNameGetCollection : 33ms

Separate process _IEAction: 13ms

 

It slows down if you put anything (like GUIGetMsg) in the WHILE loop.

 

How do I fix this?

 

Create IE:

#include <GUIConstantsEx.au3>
#include <IE.au3>
#include <WindowsConstants.au3>

Local $oIE = _IECreateEmbedded()
GUICreate("My Embedded Web control Test", 640, 580, (@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, $WS_OVERLAPPEDWINDOW + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
GUICtrlCreateObj($oIE, 10, 40, 600, 360)

GUISetState(@SW_SHOW) ;Show GUI

_IENavigate($oIE, "http://www.autoitscript.com")


$timer = TimerInit()
$oLink = _IETagNameGetCollection($oIE, "a", 3) ;takes 1ms
ConsoleWrite(TimerDiff($timer) & @CRLF)

$timer = TimerInit()
_IEAction($oLink, "click")  ;takes 135ms
ConsoleWrite(TimerDiff($timer) & @CRLF)



While 1
    Local $iMsg = GUIGetMsg()
    Select
        Case $iMsg = $GUI_EVENT_CLOSE
            ExitLoop
    EndSelect
WEnd

 

Attach to IE:

#include <IE.au3>

Local $oIE = _IEAttach("My Embedded Web control Test", "embedded")




$timer = TimerInit()
$oLink = _IETagNameGetCollection($oIE, "a", 3)  ; 5000ms
ConsoleWrite(TimerDiff($timer) & @CRLF)

$timer = TimerInit()
_IEAction($oLink, "click")  ; 850ms
ConsoleWrite(TimerDiff($timer) & @CRLF)

 

 

attach.au3

create.au3

Edited by milos83
Link to comment
Share on other sites

I replicated the issue, could this be a question for developers? @Jos

Seeing as no one has replied.

Spoiler

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

MirrorDir - Synchronize/Backup/Mirror Folders

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

Link to comment
Share on other sites

I will try in next 8 hour

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

I have some progress.

EDIT:
I'm tired, going sleep, will check it toomorow.

Edited by mLipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

I'm at work in my office.
This is problem which I must look closer at night.

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

Try this  modified _IETagNameGetCollection_mod()  :

#include <IE.au3>

_Example()
Func _Example()
    Local $timer = TimerInit()

;~  Local $oIE = _IEAttach("http://www.autoitscript.com", "url") ; for testing with stnadard IE - not embedded
    Local $oIE = _IEAttach("My Embedded Web control Test", "embedded") ; for testing with embedded IE
    ConsoleWrite(@ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)

    Local $oLink = _IETagNameGetCollection($oIE, "a", 3) ; 5000ms
    ConsoleWrite(@ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)

    $timer = TimerInit()
    $oLink = _IETagNameGetCollection_mod($oIE, "a", 3) ; 5000ms
    ConsoleWrite(@ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)

    $timer = TimerInit()
    _IEAction($oLink, "click") ; 850ms
    ConsoleWrite(@ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)

EndFunc   ;==>_Example


Func _IETagNameGetCollection_mod(ByRef $oObject, $sTagName, $iIndex = -1)
    If Not IsObj($oObject) Then
        __IEConsoleWriteError("Error", "_IETagNameGetCollection", "$_IESTATUS_InvalidDataType")
        Return SetError($_IESTATUS_InvalidDataType, 1, 0)
    EndIf
    ;
    If Not __IEIsObjType($oObject, "browserdom") Then
        __IEConsoleWriteError("Error", "_IETagNameGetCollection", "$_IESTATUS_InvalidObjectType")
        Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
    EndIf

    ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
    Local $oTemp
    If __IEIsObjType($oObject, "documentcontainer") Then
        $oTemp = _IEDocGetObj($oObject)
    Else
        $oTemp = $oObject
    EndIf

    ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
    $iIndex = Number($iIndex)
    Local $oTemp2 = $oTemp.GetElementsByTagName($sTagName)
    ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
    Select
        Case $iIndex = -1
            ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
            Return SetError($_IESTATUS_Success, $oTemp2.length, _
                    $oTemp2)
        Case $iIndex > -1 And $iIndex < $oTemp2.length
            ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
            Return SetError($_IESTATUS_Success, $oTemp2.length, _
                    $oTemp2.item($iIndex))
        Case $iIndex < -1
            ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
            __IEConsoleWriteError("Error", "_IETagNameGetCollection", "$_IESTATUS_InvalidValue", "$iIndex < -1")
            Return SetError($_IESTATUS_InvalidValue, 3, 0)
        Case Else
            ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
            __IEConsoleWriteError("Error", "_IETagNameGetCollection", "$_IESTATUS_NoMatch")
            Return SetError($_IESTATUS_NoMatch, 0, 0) ; Could be caused by parameter 2, 3 or both
    EndSelect
    ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
EndFunc   ;==>_IETagNameGetCollection_mod

 

This is not solution to this problem but it is speed up for IE.au3    _IETagNameGetCollection() function.

I am still researching the problem to know the cause and the solution.

 

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

12 hours ago, mLipok said:

Try this  modified _IETagNameGetCollection_mod()  :

#include <IE.au3>

_Example()
Func _Example()
    Local $timer = TimerInit()

;~  Local $oIE = _IEAttach("http://www.autoitscript.com", "url") ; for testing with stnadard IE - not embedded
    Local $oIE = _IEAttach("My Embedded Web control Test", "embedded") ; for testing with embedded IE
    ConsoleWrite(@ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)

    Local $oLink = _IETagNameGetCollection($oIE, "a", 3) ; 5000ms
    ConsoleWrite(@ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)

    $timer = TimerInit()
    $oLink = _IETagNameGetCollection_mod($oIE, "a", 3) ; 5000ms
    ConsoleWrite(@ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)

    $timer = TimerInit()
    _IEAction($oLink, "click") ; 850ms
    ConsoleWrite(@ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)

EndFunc   ;==>_Example


Func _IETagNameGetCollection_mod(ByRef $oObject, $sTagName, $iIndex = -1)
    If Not IsObj($oObject) Then
        __IEConsoleWriteError("Error", "_IETagNameGetCollection", "$_IESTATUS_InvalidDataType")
        Return SetError($_IESTATUS_InvalidDataType, 1, 0)
    EndIf
    ;
    If Not __IEIsObjType($oObject, "browserdom") Then
        __IEConsoleWriteError("Error", "_IETagNameGetCollection", "$_IESTATUS_InvalidObjectType")
        Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
    EndIf

    ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
    Local $oTemp
    If __IEIsObjType($oObject, "documentcontainer") Then
        $oTemp = _IEDocGetObj($oObject)
    Else
        $oTemp = $oObject
    EndIf

    ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
    $iIndex = Number($iIndex)
    Local $oTemp2 = $oTemp.GetElementsByTagName($sTagName)
    ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
    Select
        Case $iIndex = -1
            ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
            Return SetError($_IESTATUS_Success, $oTemp2.length, _
                    $oTemp2)
        Case $iIndex > -1 And $iIndex < $oTemp2.length
            ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
            Return SetError($_IESTATUS_Success, $oTemp2.length, _
                    $oTemp2.item($iIndex))
        Case $iIndex < -1
            ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
            __IEConsoleWriteError("Error", "_IETagNameGetCollection", "$_IESTATUS_InvalidValue", "$iIndex < -1")
            Return SetError($_IESTATUS_InvalidValue, 3, 0)
        Case Else
            ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
            __IEConsoleWriteError("Error", "_IETagNameGetCollection", "$_IESTATUS_NoMatch")
            Return SetError($_IESTATUS_NoMatch, 0, 0) ; Could be caused by parameter 2, 3 or both
    EndSelect
    ConsoleWrite("! " & @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
EndFunc   ;==>_IETagNameGetCollection_mod

 

This is not solution to this problem but it is speed up for IE.au3    _IETagNameGetCollection() function.

I am still researching the problem to know the cause and the solution.

 

Thanks @mLipok

Basically, the _IETagNameGetCollection() was just an example.

Most of _IE UDF functions are slowed down.

 

Link to comment
Share on other sites

I know as I said this is not a solution just a speed up, and an information to show that I'm working on this.

Question 1:
Did you make test on older Au3 version ?
 

Question 2:
Did you make test on few different system WIn7, 8, 8.1, 10 and with different IE version ? with different ServicePack or without recent Windows Updates ?

I have only fully updated Windows station and do no have possibility to test on different environment.

 

Q

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

On 1/25/2018 at 0:44 PM, mLipok said:

I know as I said this is not a solution just a speed up, and an information to show that I'm working on this.

Question 1:
Did you make test on older Au3 version ?
 

Question 2:
Did you make test on few different system WIn7, 8, 8.1, 10 and with different IE version ? with different ServicePack or without recent Windows Updates ?

I have only fully updated Windows station and do no have possibility to test on different environment.

 

Q

Tested on win7 and win10. both fully updated. Latest Autoit.

Latest test showed something interesting.

If you rightclick the embedded IE  the requests are fast again and issue is gone!

Run this with and then without rightclick context menu up or just give it a right click while its running and see the timers.

 

#include <IE.au3>

Local $oIE = _IEAttach("My Embedded Web control Test", "embedded")

For $i = 1 To 20
    
    $timer = TimerInit()
    $oLink = _IETagNameGetCollection($oIE, "a", 3)  ; 5000ms
    ConsoleWrite(TimerDiff($timer) & @CRLF)

Next

 

There is another bug regarding _IEAttach that I discovered today.

After about a minute from attaching about 4 _IEGetObjById requests will crash the autotit entirely giving "Autoit has been closed...".

Opposed to the first bug, this one happens no matter if the embedded IE is made in AutoIt or C#. 

That means its an _IEAttach issue.

I'll test on win 10 and see if it acts the same and I'll make another thread about it.

This second bug appears only on win 7.

 

 

Edited by milos83
Link to comment
Share on other sites

And here the other bug reproducer.

This script will cause Autoit v3 Script has stopped working crash

#include <IE.au3>

$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
Local $oIE = _IEAttach("My Embedded Web control Test", "embedded")


For $i = 1 To 1000
    $obj = _IEGetObjById($oIE, "main-content")
    ConsoleWrite("Run:" & $i & @TAB & IsObj($obj) & @CRLF)
    ;Fails after about 590 cycles
;~  Sleep(1000); takes 10 min with this sleep and about 10s without it.
Next


Func MyErrFunc()
EndFunc

It only happens if the embedded IE script has an empty WHILE loop (that is done in order to avoid the IE UDF delays regarding the first bug).

This means, once you are attached, you have a limited number of actions you can send to IE.

eg. If you add _IEAction focus to the script above, the number of steps until the crash is halved.

 

Opposed to the limit on number of actions, when attaching to c# made IE embedded, we have a time limit and its about 70 seconds!

No matter if you send one of 1000 actions, it fails after about a minute.

 

Link to comment
Share on other sites

On 25.01.2018 at 5:36 PM, milos83 said:

If you rightclick the embedded IE  the requests are fast again and issue is gone!

Confirm that issue is gone in this workaround.
Also confirm that in case when While Wend loop is empty then the speed is fast.


Here are my testing scripts:
 

Spoiler

 

create.au3:

#include <GUIConstantsEx.au3>
#include <IE.au3>
#include <WindowsConstants.au3>

_Example()
Func _Example()
    Local $oIE = _IECreateEmbedded()
    Local $hGUI = GUICreate("My Embedded Web control Test", 640, 580, (@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, $WS_OVERLAPPEDWINDOW + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
    Local $iEmbeded = GUICtrlCreateObj($oIE, 10, 40, 600, 360)
    GUISetState(@SW_SHOW) ;Show GUI

    _IENavigate($oIE, "http://www.autoitscript.com")


    Local $timer = TimerInit()
    Local $oLink = _IETagNameGetCollection($oIE, "a", 3) ;takes 1ms
    ConsoleWrite(TimerDiff($timer) & @CRLF)

    $timer = TimerInit()
    _IEAction($oLink, "click") ;takes 135ms
    ConsoleWrite(TimerDiff($timer) & @CRLF)

    ; Check how external Attach works before going to inside Loop
    MsgBox(0, '', 1)

    Local $iMsg
    While 1

        $iMsg = GUIGetMsg()
        Select
            Case $iMsg = $GUI_EVENT_CLOSE
                ExitLoop
        EndSelect
    WEnd

EndFunc   ;==>_Example

attach.au3

#include <IE.au3>

_Example()
ConsoleWrite("+ Next test" & @CRLF)
;~ MsgBox(0, '', 1)
Sleep(3000)
_Example()
Func _Example()
    Local $timer = TimerInit()

;~  Local $oIE = _IEAttach("http://www.autoitscript.com", "url") ; for testing with stnadard IE - not embedded
    Local $oIE = _IEAttach("My Embedded Web control Test", "embedded") ; for testing with embedded IE
;~  Local $oIE = _IEAttach("Komentarz", "embedded") ; for testing with embedded IE - testing with TeamViewer Comment window

    ConsoleWrite('! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)

    Local $sHTML = _IEBodyReadHTML($oIE)
    ConsoleWrite('! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)
;~  ClipPut($sHTML)
;~  MsgBox(0, '$sHTML', $sHTML)

    Local $oLink = _IETagNameGetCollection($oIE, "a", 3) ; 5000ms
    ConsoleWrite('! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)

    $timer = TimerInit()
    $oLink = _IETagNameGetCollection($oIE, "a", 3) ; 5000ms
    ConsoleWrite('! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)

    $timer = TimerInit()
    _IEAction($oLink, "click") ; 850ms
    ConsoleWrite('! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & TimerDiff($timer) & @CRLF)

EndFunc   ;==>_Example

Func _IETagNameGetCollection_mod(ByRef $oObject, $sTagName, $iIndex = -1)
    If Not IsObj($oObject) Then
        __IEConsoleWriteError("Error", "_IETagNameGetCollection", "$_IESTATUS_InvalidDataType")
        Return SetError($_IESTATUS_InvalidDataType, 1, 0)
    EndIf
    ;
    If Not __IEIsObjType($oObject, "browserdom") Then
        __IEConsoleWriteError("Error", "_IETagNameGetCollection", "$_IESTATUS_InvalidObjectType")
        Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
    EndIf

    ConsoleWrite("! " & '! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
    Local $oTemp
    If __IEIsObjType($oObject, "documentcontainer") Then
        $oTemp = _IEDocGetObj($oObject)
    Else
        $oTemp = $oObject
    EndIf

    ConsoleWrite("! " & '! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
    $iIndex = Number($iIndex)
    Local $oTemp2 = $oTemp.GetElementsByTagName($sTagName)
    ConsoleWrite("! " & '! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
    Select
        Case $iIndex = -1
            ConsoleWrite("! " & '! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
            Return SetError($_IESTATUS_Success, $oTemp2.length, _
                    $oTemp2)
        Case $iIndex > -1 And $iIndex < $oTemp2.length
            ConsoleWrite("! " & '! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
            Return SetError($_IESTATUS_Success, $oTemp2.length, _
                    $oTemp2.item($iIndex))
        Case $iIndex < -1
            ConsoleWrite("! " & '! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
            __IEConsoleWriteError("Error", "_IETagNameGetCollection", "$_IESTATUS_InvalidValue", "$iIndex < -1")
            Return SetError($_IESTATUS_InvalidValue, 3, 0)
        Case Else
            ConsoleWrite("! " & '! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
            __IEConsoleWriteError("Error", "_IETagNameGetCollection", "$_IESTATUS_NoMatch")
            Return SetError($_IESTATUS_NoMatch, 0, 0) ; Could be caused by parameter 2, 3 or both
    EndSelect
    ConsoleWrite("! " & '! ---> @error=' & @error & '  @extended=' & @extended & ' : ' &  @ScriptLineNumber & " " & @MIN & ":" & @SEC & ":" & @MSEC & @CRLF)
EndFunc   ;==>_IETagNameGetCollection_mod

 

 

 

I test this with Au3.3.14.2, Au3.3.12.0, Au3.3.10.0, Au3.3.8.1, all version works in the sam way - slowly in this testing scenario.

 

I'm not an system enginer or C++ dev, so my answer is only a guess.

The problem is in how Sleep() or GUIGetMsg() works.
This two functions internall make an internall loop which literaly sleep's Au3 script durring interpretation.

When internall loop is in progress, then no more messages, communication is maintained by Au3 Core so also, embeded IE is not exposed ("in real time") to the outer environment, this mean any program which want to access embeded object must wait to the end of internall loop.

Hower IMHO this is looking like an issue as Sleep() or GUIGetMsg() should generate only few miliseconds delay.

 

More precise answer could be done by @Jon or @trancexx.

 

Edited by mLipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

On 26.01.2018 at 1:15 PM, milos83 said:

And here the other bug reproducer.

This script will cause Autoit v3 Script has stopped working crash

#include <IE.au3>

$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
Local $oIE = _IEAttach("My Embedded Web control Test", "embedded")


For $i = 1 To 1000
    $obj = _IEGetObjById($oIE, "main-content")
    ConsoleWrite("Run:" & $i & @TAB & IsObj($obj) & @CRLF)
    ;Fails after about 590 cycles
;~  Sleep(1000); takes 10 min with this sleep and about 10s without it.
Next


Func MyErrFunc()
EndFunc

It only happens if the embedded IE script has an empty WHILE loop (that is done in order to avoid the IE UDF delays regarding the first bug).

This means, once you are attached, you have a limited number of actions you can send to IE.

eg. If you add _IEAction focus to the script above, the number of steps until the crash is halved.

 

Opposed to the limit on number of actions, when attaching to c# made IE embedded, we have a time limit and its about 70 seconds!

No matter if you send one of 1000 actions, it fails after about a minute.

 

I little modify your testing script:
 

#include <IE.au3>

;~ $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
_IEErrorHandlerRegister(MyErrFunc)
Local $oIE = _IEAttach("My Embedded Web control Test", "embedded")


For $i = 1 To 100000
    $obj = _IEGetObjById($oIE, "main-content")
    If @error Then ConsoleWrite('! ---> @error=' & @error & '  @extended=' & @extended & ' : ' & @CRLF)
    ConsoleWrite("Run:" & $i & @TAB & IsObj($obj) & @CRLF)
Next

Func MyErrFunc($oError)
    ; Do anything here.
    ConsoleWrite( _
            @ScriptName & " (" & $oError.scriptline & ") : ==> COM Error intercepted !" & @CRLF & _
            @TAB & "err.number is: " & @TAB & @TAB & "0x" & Hex($oError.number) & @CRLF & _
            @TAB & "err.windescription:" & @TAB & $oError.windescription & @CRLF & _
            @TAB & "err.description is: " & @TAB & $oError.description & @CRLF & _
            @TAB & "err.source is: " & @TAB & @TAB & $oError.source & @CRLF & _
            @TAB & "err.helpfile is: " & @TAB & $oError.helpfile & @CRLF & _
            @TAB & "err.helpcontext is: " & @TAB & $oError.helpcontext & @CRLF & _
            @TAB & "err.lastdllerror is: " & @TAB & $oError.lastdllerror & @CRLF & _
            @TAB & "err.scriptline is: " & @TAB & $oError.scriptline & @CRLF & _
            @TAB & "err.retcode is: " & @TAB & "0x" & Hex($oError.retcode) & @CRLF & @CRLF)
EndFunc   ;==>_ErrFunc

And I do not have any problem in 10000 pasess.

 

Edited by mLipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

15 hours ago, mLipok said:

I little modify your testing script:
 

#include <IE.au3>

;~ $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
_IEErrorHandlerRegister(MyErrFunc)
Local $oIE = _IEAttach("My Embedded Web control Test", "embedded")


For $i = 1 To 100000
    $obj = _IEGetObjById($oIE, "main-content")
    If @error Then ConsoleWrite('! ---> @error=' & @error & '  @extended=' & @extended & ' : ' & @CRLF)
    ConsoleWrite("Run:" & $i & @TAB & IsObj($obj) & @CRLF)
Next

Func MyErrFunc($oError)
    ; Do anything here.
    ConsoleWrite( _
            @ScriptName & " (" & $oError.scriptline & ") : ==> COM Error intercepted !" & @CRLF & _
            @TAB & "err.number is: " & @TAB & @TAB & "0x" & Hex($oError.number) & @CRLF & _
            @TAB & "err.windescription:" & @TAB & $oError.windescription & @CRLF & _
            @TAB & "err.description is: " & @TAB & $oError.description & @CRLF & _
            @TAB & "err.source is: " & @TAB & @TAB & $oError.source & @CRLF & _
            @TAB & "err.helpfile is: " & @TAB & $oError.helpfile & @CRLF & _
            @TAB & "err.helpcontext is: " & @TAB & $oError.helpcontext & @CRLF & _
            @TAB & "err.lastdllerror is: " & @TAB & $oError.lastdllerror & @CRLF & _
            @TAB & "err.scriptline is: " & @TAB & $oError.scriptline & @CRLF & _
            @TAB & "err.retcode is: " & @TAB & "0x" & Hex($oError.retcode) & @CRLF & @CRLF)
EndFunc   ;==>_ErrFunc

And I do not have any problem in 10000 pasess.

 

Still crashes for me after about 800 turns.

Are you sure you used an IE with empty while loop like this:

 

#include <GUIConstantsEx.au3>
#include <IE.au3>
#include <WindowsConstants.au3>

Local $oIE = _IECreateEmbedded()
GUICreate("My Embedded Web control Test", 640, 580, (@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, $WS_OVERLAPPEDWINDOW + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
GUICtrlCreateObj($oIE, 10, 40, 600, 360)

GUISetState(@SW_SHOW) ;Show GUI

_IENavigate($oIE, "http://www.autoitscript.com")


While True
WEnd

 

Link to comment
Share on other sites

6 hours ago, milos83 said:

Still crashes for me after about 800 turns.

Which:

  • IE version ?
  • Windows Version 64/32 Bit ?

Please also put here SciTE console output.

 

 

6 hours ago, milos83 said:

Are you sure you used an IE with empty while loop like this:

Yes I was tested this with empty loop.

But I do not know what you mean, to what you are refering ?
 

Edited by mLipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
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
 Share

×
×
  • Create New...