2 Rechner gleiche IE-VErsion, doch Skript funktioniert nicht auf beiden

  • Hallo an alle,

    wer sich noch erinnern kann: ich suche eine Lösung für die Antwortzeitenmessung von Webanwendungen. Jetzt hatte ich mir schon die Unterstützung von einem Dienstleister geholt. Das Skript arbeitet mit IE-Events und gibt Laufzeiten zurück. Jetzt ist das Problem, dass ich 2 Testserver habe, die die gleiche IE-Evrsion haben, beide .Net-Framework 2.0 installiert haben - auf dem einen funzt es,a uf dem anderen nicht.

    Ich gebe euch mal das Skript + Fehlermeldung - ich raff es nämlich einfach nicht. Vielleicht könnt ihr mir helfen. :wacko:

    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=..\bin\BrowserCheck.exe
    #AutoIt3Wrapper_Res_Comment=?berpr?ft den Seitenaufbau von audgew?hlten Seiten und giebt die Zeiten an eine Datenbank
    #AutoIt3Wrapper_Res_Fileversion=0.9.1.1
    #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
    #AutoIt3Wrapper_Res_LegalCopyright=Alexander Koch, also EDV Beratung, 35606 Solms Germany
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Run_cvsWrapper=v
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #EndRegion
    ;**** Directives created by AutoIt3Wrapper_GUI ****
    ; Example script, showing the usage of COM Event functions.
    ; Requires at least AutoIt beta version 3.1.1.104 !
    ;
    ; See also: http://msdn.microsoft.com/workshop/brows…netexplorer.asp

    [/autoit][autoit][/autoit][autoit]

    ; We use a very simple GUI to show the results of our Events.
    #include "GUIConstantsEx.au3"
    #include <IE.au3>
    #include <timers.au3>
    #include <File.au3>
    $Progname = "BrowserCheck"
    $Settings="Settings.ini"

    [/autoit][autoit][/autoit][autoit]

    FileInstall("Settings.ini","Settings.ini")

    [/autoit][autoit][/autoit][autoit]

    if not FileExists($Settings) then
    MsgBox(16,$Progname,"Settings.ini kann nicht gefunden werden."& @CRLF &"Programm wird beendet.")
    exit(1)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    Dim $ieobj[1][5]
    Global $URLs[3][2]
    Global $Sites[1][8]
    $Sites[0][0] = 0
    $URLs = IniReadSection($Settings, "Sites")
    Global $GuiEnable = IniRead($Settings, "Settings", "Gui_Enable", False)
    Global $Timer = IniRead($Settings, "Settings", "Timer", 100000)
    Global $Log = IniRead($Settings, "Settings", "Log", 0)
    Global $trayIcon = IniRead($Settings, "Settings", "EnableTrayIcon", 0)

    [/autoit][autoit][/autoit][autoit]

    if $trayIcon=0 Then
    AutoItSetOption("TrayIconHide",1)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $GUIMain = GUICreate("Event Test", 600, 500)

    [/autoit][autoit][/autoit][autoit]

    $Label1 = GUICtrlCreateLabel("Ladevorgänge:", 8, 8, 76, 17)
    $Label2 = GUICtrlCreateLabel("Durchschnitt Zeit:", 8, 32, 88, 17)
    $Label3 = GUICtrlCreateLabel("Min[ms]: ", 8, 56, 46, 17)
    $Label4 = GUICtrlCreateLabel("Min[URL]:", 8, 80, 52, 17)
    $Label5 = GUICtrlCreateLabel("Max[ms]:", 8, 104, 46, 17)
    $Label6 = GUICtrlCreateLabel("Max[URL]:", 8, 128, 55, 17)
    $Label7 = GUICtrlCreateLabel("", 96, 8, 530, 17)
    $Label8 = GUICtrlCreateLabel("", 96, 32, 530, 17)
    $Label9 = GUICtrlCreateLabel("", 96, 56, 530, 17)
    $Label10 = GUICtrlCreateLabel("", 96, 80, 530, 17)
    $Label11 = GUICtrlCreateLabel("", 96, 104, 530, 17)
    $Label12 = GUICtrlCreateLabel("", 96, 128, 530, 17)

    [/autoit][autoit][/autoit][autoit]

    $GUIEdit = GUICtrlCreateEdit("Test Log:" & @CRLF, 10, 250, 580, 200)
    $GUIProg = GUICtrlCreateProgress(10, 240, 580, 10)
    $GUIExit = GUICtrlCreateButton(" Close ", 200, 450, 80, 30)
    $GUIreset = GUICtrlCreateButton(" Reset ", 300, 450, 80, 30)

    [/autoit][autoit][/autoit][autoit]

    If $GuiEnable = "1" or $GuiEnable = "true" Then GUISetState() ;Show GUI

    [/autoit][autoit][/autoit][autoit]

    _Timer_SetTimer($GUIMain, $Timer, "_SaveToDB")

    [/autoit][autoit][/autoit][autoit]

    ; We prepare the Internet Explorer as our test subject
    $oShell = ObjCreate("shell.application"); Get the Windows Shell Object
    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Or $msg = $GUIExit Then ExitLoop
    If $msg = $GUIreset Then _reset()
    $oShellWindows = $oShell.windows ; Get the collection of open shell Windows
    If Not IsObj($oShellWindows) Then
    MsgBox(0, "Error", "Failed to obtain shell windows. Error: " & @error)
    Exit
    EndIf
    ; Now we search through all open Shell Windows and locate our internet page
    For $Window In $oShellWindows ; Count all existing shell windows
    For $i = 1 To $URLs[0][0]
    If StringInStr($Window.LocationURL, $URLs[$i][1]) Then
    Local $CreateObj = True
    For $j = 0 To UBound($ieobj) - 1
    If $ieobj[$j][0] = $Window.hwnd Then $CreateObj = False
    ;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Window.hwnd = ' & $Window.hwnd & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Next
    If $CreateObj Then
    ReDim $ieobj[UBound($ieobj) + 1][UBound($ieobj, 2)]
    $ieobj[UBound($ieobj) - 1][0] = $Window.hwnd
    $ieobj[UBound($ieobj) - 1][1] = $Window
    $ieobj[UBound($ieobj) - 1][2] = ObjEvent($Window, "IEEvent_", "DWebBrowserEvents")
    $ieobj[UBound($ieobj) - 1][3] = ObjEvent($Window, "IEEvent_", "DWebBrowserEvents2")
    $ieobj[UBound($ieobj) - 1][4] = ObjEvent($Window, "IEEvent_", "IIWebBrowser2")
    $Sites[0][0] += 1
    EndIf
    EndIf
    Local $createSite = True
    For $j = 1 To UBound($Sites) - 1
    If StringInStr($Sites[$j][0], $URLs[$i][1]) Then $createSite = False
    Next
    If $createSite Then
    ReDim $Sites[UBound($Sites) + 1][UBound($Sites, 2)]
    $Sites[UBound($Sites) - 1][0] = $URLs[$i][1] ; Site URL
    $Sites[UBound($Sites) - 1][1] = 0 ; Init Time
    $Sites[UBound($Sites) - 1][2] = 0 ; Min
    $Sites[UBound($Sites) - 1][3] = 0 ; Min Site
    $Sites[UBound($Sites) - 1][4] = 0 ; Max
    $Sites[UBound($Sites) - 1][5] = 0 ; Max Site
    $Sites[UBound($Sites) - 1][6] = 0 ; Z?hler
    $Sites[UBound($Sites) - 1][7] = 0 ; Mittelwert
    EndIf
    Next
    Next
    WEnd

    [/autoit][autoit][/autoit][autoit]

    ; We choose for a specific Internet Explorer interface 'DWebBrowserEvents' because the IE is subject
    ; to modifications by e.g. Visual Studio and Adobe Acrobat Reader. If you have IE-plugins installed,
    ; AutoIt might not be able to find the correct interface automatically.

    [/autoit][autoit][/autoit][autoit]

    If @error Then
    MsgBox(0, "AutoIt COM Test", _
    "ObjEvent: Can't use event interface 'DWebBrowserEvents'. Error code: " & Hex(@error, 8))
    Exit
    EndIf

    [/autoit][autoit][/autoit][autoit]

    GUISwitch($GUIMain) ; Switch back to our GUI in case IE stealed the focus

    [/autoit][autoit][/autoit][autoit]

    ; Waiting for user to close the GUI.

    [/autoit][autoit][/autoit][autoit]

    ;$EventObject.Stop ; Tell IE we don't want to receive events.
    ;$EventObject=0 ; Kill the Event Object
    ;If WinExists($IEWnd) then $oIE.Quit ; Close IE Window
    ;$oIE=0 ; Remove IE from memory (not really necessary).

    [/autoit][autoit][/autoit][autoit]

    GUIDelete() ; Remove GUI

    [/autoit][autoit][/autoit][autoit]

    Exit ; End of our Demo.

    [/autoit][autoit][/autoit][autoit]

    ; A few Internet Explorer Event Functions
    ; See also: http://msdn.microsoft.com/workshop/brows…/webbrowser.asp

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_BeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
    ; Note: the declaration is different from the one on MSDN.
    ;GUICtrlSetData ( $GUIEdit, "BeforeNavigate: " & $URL & " Flags: " & $Flags & " tgframe: " & $TargetFrameName & " Postdat: " & $PostData & " Hdrs: " & $Headers & " canc: " & $Cancel & @CRLF , "append" )
    Local $init = _Timer_Init()
    For $i = 1 To UBound($Sites) - 1
    If StringInStr($URL, $Sites[$i][0]) Then
    $Sites[$i][1] = $init
    ExitLoop
    EndIf
    Next
    EndFunc ;==>IEEvent_BeforeNavigate

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_FrameBeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
    IEEvent_BeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
    EndFunc ;==>IEEvent_FrameBeforeNavigate

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_BeforeNavigate2($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
    IEEvent_BeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
    EndFunc ;==>IEEvent_BeforeNavigate2

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_ProgressChange($Progress, $ProgressMax)
    If $ProgressMax > 0 Then
    GUICtrlSetData($GUIProg, ($Progress * 100) / $ProgressMax)
    EndIf
    EndFunc ;==>IEEvent_ProgressChange

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_StatusTextChange($Text)
    GUICtrlSetData ( $GUIEdit, "IE Status text changed to: " & $Text & @CRLF , "append" )
    EndFunc ;==>IEEvent_StatusTextChange

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_PropertyChange($szProperty)
    GUICtrlSetData ( $GUIEdit, "IE Changed the value of the property: " & $szProperty & @CRLF , "append" )
    EndFunc ;==>IEEvent_PropertyChange

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_DownloadComplete($URL)
    gUICtrlSetData ( $GUIEdit, "IE has finished a navigation operation " & $URL & @CRLF , "append" )
    EndFunc ;==>IEEvent_DownloadComplete

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_NavigateComplete($URL)
    GUICtrlSetData ( $GUIEdit, "NavigateComplete" & $URL & @CRLF , "append" )
    EndFunc ;==>IEEvent_NavigateComplete

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_FrameNavigateComplete($URL)
    IEEvent_NavigateComplete($URL)
    EndFunc ;==>IEEvent_FrameNavigateComplete

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_NavigateComplete2($URL)
    IEEvent_NavigateComplete($URL)
    EndFunc ;==>IEEvent_NavigateComplete2

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func IEEvent_CommandStateChange($Text)
    GUICtrlSetData ( $GUIEdit, "CommandStateChange" & $text & @CRLF , "append" )
    EndFunc ;==>IEEvent_CommandStateChange

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_DownloadBegin($URL)
    GUICtrlSetData ( $GUIEdit, "DownloadBegin: " & $URL & @CRLF , "append" )
    EndFunc ;==>IEEvent_DownloadBegin

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_TitleChange($Text)
    GUICtrlSetData ( $GUIEdit, "TitleChange: " & $text & @CRLF , "append" )
    EndFunc ;==>IEEvent_TitleChange

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_DocumentComplete($x, $URL)
    Local $init = _Timer_Init()
    For $i = 1 To UBound($Sites) - 1
    If StringInStr($URL, $Sites[$i][0]) Then
    $diff = _Timer_Diff($Sites[$i][1]) - _Timer_Diff($init)
    If $Sites[$i][4] = 0 Or $Sites[$i][2] = 0 Then
    $Sites[$i][2] = $diff
    $Sites[$i][3] = $URL
    $Sites[$i][4] = $diff
    $Sites[$i][5] = $URL
    EndIf
    Select
    Case $diff < $Sites[$i][2]
    $Sites[$i][2] = $diff
    $Sites[$i][3] = $URL
    Case $diff > $Sites[$i][4]
    $Sites[$i][4] = $diff
    $Sites[$i][5] = $URL
    EndSelect
    $Sites[$i][6] += 1
    $Sites[$i][7] += $diff
    GUICtrlSetData($Label7, $Sites[$i][6])
    GUICtrlSetData($Label8, $Sites[$i][7] / $Sites[$i][6])
    GUICtrlSetData($Label9, $Sites[$i][3])
    GUICtrlSetData($Label10, $Sites[$i][2])
    GUICtrlSetData($Label11, $Sites[$i][5])
    GUICtrlSetData($Label12, $Sites[$i][4])
    ExitLoop
    EndIf
    Next
    EndFunc ;==>IEEvent_DocumentComplete

    [/autoit][autoit][/autoit][autoit]

    Func IEEvent_($EventName)
    ; This is an optional event function to catch non-defined events.
    ; The parameter contains the name of the event being called.
    GUICtrlSetData($GUIEdit, "Uncatched event: " & $EventName & @CRLF, "append")
    EndFunc ;==>IEEvent_

    [/autoit][autoit][/autoit][autoit]

    Func _reset($all = 1)
    If $all Then GUICtrlSetData($GUIEdit, "")
    For $i = 1 To UBound($Sites) - 1
    $Sites[$i][1] = 0 ; Init Time
    $Sites[$i][2] = 0 ; Min
    $Sites[$i][3] = 0 ; Min Site
    $Sites[$i][4] = 0 ; Max
    $Sites[$i][5] = 0 ; Max Site
    $Sites[$i][6] = 0 ; Z?hler
    $Sites[$i][7] = 0 ; Mittelwert
    Next
    GUICtrlSetData($Label7, "")
    GUICtrlSetData($Label8, "")
    GUICtrlSetData($Label9, "")
    GUICtrlSetData($Label10, "")
    GUICtrlSetData($Label11, "")
    GUICtrlSetData($Label12, "")
    GUICtrlSetData($GUIProg, 0)
    EndFunc ;==>_reset

    [/autoit][autoit][/autoit][autoit]

    Func _SaveToDB($hWnd, $msg, $iIDTimer, $dwTime)
    #forceref $hWnd, $Msg, $iIDTimer, $dwTime
    If $Log = "1" or $Log = "true" Then
    For $i = 1 To UBound($Sites) - 1
    If Not $Sites[$i][7] = 0 Then
    _FileWriteLog("Log.log", $Sites[$i][7] / $Sites[$i][6] & "," & $Sites[$i][3] & "," & $Sites[$i][2] & "," & $Sites[$i][5] & "," & $Sites[$i][4])
    GUICtrlSetData($GUIEdit, $Sites[$i][7] / $Sites[$i][6] & "," & $Sites[$i][3] & "," & $Sites[$i][2] & "," & $Sites[$i][5] & "," & $Sites[$i][4] & @CRLF, "append")
    EndIf
    Next
    EndIf
    If UBound($Sites) > 1 Then
    _reset(0)
    EndIf
    EndFunc ;==>_SaveToDB

    [/autoit]
  • Its only a guess

    Vllt fehlt da eine wichtige Installation wie Framework oder andere Zusatztools bzw updates.

    Ehrlich gesagt finde ich gerade nichts, wo man nachlesen könnte, was man alles für AutoIt benötigt.

  • *hmmm* eigentlich nicht. Wie gesagt beide haben die gleiche Framework-Version und auch dieselben Einstellungen im IE (Java aktiviert bla blubb), aber ich vergleiche es sichershalber noch mal. Vielleicht seh ich auch den Wald vor lauter Bäumen nicht. :pinch:

    Für weitere Tips bin ich trotzdem dankbar!!!

  • Hallo, ich habe das script geschrieben,

    Zeile 71 ist glaub ich falsch.
    Es müsste ObjCreate("Shell.Explorer.2") heißen

    der Browser wird immer sauber gefunden es kommen nur keine Events am Script an.
    Das kann also nicht das Problem sein.
    allerdings hilft der hinweis dabei etwas weiniger Systemlast zu verursachen da dann nur die IEs gelistet werden.
    Das Script läuft auch Tadellos mit IE 7. Nur bei manchen Rechner läuft es nicht.

  • Hallo,

    *hmmm* eigentlich nicht. Wie gesagt beide haben die gleiche Framework-Version und auch dieselben Einstellungen im IE (Java aktiviert bla blubb), aber ich vergleiche es sichershalber noch mal. Vielleicht seh ich auch den Wald vor lauter Bäumen nicht. :pinch:

    Für weitere Tips bin ich trotzdem dankbar!!!

    nur zur Info im error.log die unteren Zeilen zeigen nur das die Browser Fenster geschlossen wurden, auch das ist ein Zeichen das die Browser Fenster sauber gefunden werde.