Hi zusammen,
ich muss mich mal wieder mit einem Problem an euch wenden.
In einem Script für unser Unternehmen, möchte ich gerne die Zeit messen, die unsere Intranet Seite zum laden braucht.
Ich hatte dies bisher so gelöst:
#include <IE.au3>
;Internet Explorer (%IntranetWebAddress%) test
if ProcessExists("iexplore.exe") then ProcessClose("iexplore.exe") ;Close Internet Explorer and start again. Measure Time to open Website: %IntranetWebAddress%
Sleep(50)
if ProcessExists("iexplore.exe *32") then ProcessClose("iexplore.exe *32")
$timer = TimerInit ()
Local $oIE_Intranet = _IECreate("%IntranetWebAddress%")
_IELoadWait($oIE_Intranet)
Local $IEStartTimeIntranet = Round (TimerDiff ($timer)/1000,0) ;Calculate IEStartTimeIntranet from Milliseconds to Seconds
Sleep(1000)
_IEQuit($oIE_Intranet)
Alles anzeigen
Ich bekomme folgenden Fehler in der Konsole:
Console Error:
-->IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_ClientDisconnected(-2147417848, Browser has been deleted prior to operation.)
-->IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_InvalidObjectType ()
Das hatte auch anfangs super funktioniert, bis ich "#RequireAdmin" entfernen musste, da unsere User keine AdminRechte haben.
Auf diesen Fehler wird selbst auf den offiziellen Seiten hingewiesen und "Workarounds" angeboten:
Quelle: https://autoit.de/onlinehilfe/libfunctions/_IECreate.htm
Wenn der Browser eine URL laden soll, die in einer anderen Sicherheitszone liegt, wird in Windows Vista wird ein neues Browser Fenster erstellt. Dies erhöht die Sicherheit. Dies geschieht auch bei dem ersten erstellen und wenn die Seite durch _IECreate erstellt wurde. Das neue Fenster ist eine neue Browser Instanz und vorherige Browser Instanzen haben keinen Bezug mehr darauf.
Es gibt verschiedene Möglichkeiten dies zu umgehen:
1) Es kann #RequireAdmin in dem Code hinzugefügt werden (dies ist notwendig, wenn der Account ein Teil der Administratorgruppe ist und zeigt an, dass notwendige Referenzen verfügbar sind).
2) Es kann _IEAttach verwendet werden um es an ein neues Browser Fenster anzuhängen.
3) Es kann die Zielwebseite zu der vertrauten Sicherheitszone im Internet Explorer hinzugefügt werden.
4) Es kann der "geschützte Modus" im Internet Explorer abgeschaltet werden.
5) Es kann die Benutzerkontensteuerung (UAC) abgeschaltet werden. Jedoch muss man sich im Klaren sein, was es bedeutet, wenn man die Sicherheitsfeatures des Internet Explorers abschaltet, wenn man ungeschützte Seiten besucht.
Zu 1) #RequireAdmin kann leider nicht angewendet werden
Zu 2) Ich habe schon versucht es mit _IEAttach zu lösen, aber ich verstehe leider nicht, wie das damit funktionieren soll. Ich habe auch bisher keine Tutorial oder so gefunden
Zu 3) Leider IT-Seitig nicht so ohne weiteres möglich. Wäre glaube ich mehr Aufwand, als eine Alternative (3rd Level Support in UK)
Zu 4) ist bereits deaktiviert
Zu 5) Lieber nicht
Vielleicht gibt es ja auch eine ganz andere Möglichkeit, die mir nicht einfällt. Mehrere Gehirne denken ja bekanntlicher Weise besser als eins
Was brauche ich:
Unsere Intranet Website muss in IE gestartet werden (auch gerne mit Umwegen) und es muss irgendwie die Zeit gemessen werden, bis die Website komplett geladen ist.
Klingt einfach, ist es aber (zumindest für mich) nicht. Problem ist eben, das die Website in den Internet Optionen unter Sicherheit in der Gruppe "lokales Intranet" eingetragen ist.
Mir ist jetzt gerade eingefallen ob es möglich ist, die Netzwerklast eines Prozesses (iexplorer.exe) zu überwachen. Wenn dies auf Null geht, "Stoppuhr anhalten".
Wäre wieder für jeden Tipp dankbar!
Grüße
Hector