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
; 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"
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
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)
if $trayIcon=0 Then
AutoItSetOption("TrayIconHide",1)
EndIf
$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)
$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)
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
; 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.
If @error Then
MsgBox(0, "AutoIt COM Test", _
"ObjEvent: Can't use event interface 'DWebBrowserEvents'. Error code: " & Hex(@error, 8))
Exit
EndIf
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).
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
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
Func IEEvent_FrameBeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
IEEvent_BeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
EndFunc ;==>IEEvent_FrameBeforeNavigate
Func IEEvent_BeforeNavigate2($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
IEEvent_BeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
EndFunc ;==>IEEvent_BeforeNavigate2
Func IEEvent_ProgressChange($Progress, $ProgressMax)
If $ProgressMax > 0 Then
GUICtrlSetData($GUIProg, ($Progress * 100) / $ProgressMax)
EndIf
EndFunc ;==>IEEvent_ProgressChange
Func IEEvent_StatusTextChange($Text)
GUICtrlSetData ( $GUIEdit, "IE Status text changed to: " & $Text & @CRLF , "append" )
EndFunc ;==>IEEvent_StatusTextChange
Func IEEvent_PropertyChange($szProperty)
GUICtrlSetData ( $GUIEdit, "IE Changed the value of the property: " & $szProperty & @CRLF , "append" )
EndFunc ;==>IEEvent_PropertyChange
Func IEEvent_DownloadComplete($URL)
gUICtrlSetData ( $GUIEdit, "IE has finished a navigation operation " & $URL & @CRLF , "append" )
EndFunc ;==>IEEvent_DownloadComplete
Func IEEvent_NavigateComplete($URL)
GUICtrlSetData ( $GUIEdit, "NavigateComplete" & $URL & @CRLF , "append" )
EndFunc ;==>IEEvent_NavigateComplete
Func IEEvent_FrameNavigateComplete($URL)
IEEvent_NavigateComplete($URL)
EndFunc ;==>IEEvent_FrameNavigateComplete
Func IEEvent_NavigateComplete2($URL)
IEEvent_NavigateComplete($URL)
EndFunc ;==>IEEvent_NavigateComplete2
Func IEEvent_CommandStateChange($Text)
GUICtrlSetData ( $GUIEdit, "CommandStateChange" & $text & @CRLF , "append" )
EndFunc ;==>IEEvent_CommandStateChange
Func IEEvent_DownloadBegin($URL)
GUICtrlSetData ( $GUIEdit, "DownloadBegin: " & $URL & @CRLF , "append" )
EndFunc ;==>IEEvent_DownloadBegin
Func IEEvent_TitleChange($Text)
GUICtrlSetData ( $GUIEdit, "TitleChange: " & $text & @CRLF , "append" )
EndFunc ;==>IEEvent_TitleChange
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
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_
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
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
2009-03-03 14:11:43 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Schnittstelle nicht unterstützt
' Fehlernummer : ' 80004002' Fehlerzeile : ' -1'
2009-03-03 14:11:44 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Schnittstelle nicht unterstützt
' Fehlernummer : ' 80004002' Fehlerzeile : ' -1'
2009-03-03 14:11:52 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Schnittstelle nicht unterstützt
' Fehlernummer : ' 80004002' Fehlerzeile : ' -1'
2009-03-03 14:11:53 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Schnittstelle nicht unterstützt
' Fehlernummer : ' 80004002' Fehlerzeile : ' -1'
2009-03-03 14:11:54 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Schnittstelle nicht unterstützt
' Fehlernummer : ' 80004002' Fehlerzeile : ' -1'
2009-03-03 14:11:55 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Schnittstelle nicht unterstützt
' Fehlernummer : ' 80004002' Fehlerzeile : ' -1'
2009-03-03 14:21:05 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Das aufgerufene Objekt wurde von den Clients getrennt.
' Fehlernummer : ' 80010108' Fehlerzeile : ' -1'
2009-03-03 14:21:05 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Das aufgerufene Objekt wurde von den Clients getrennt.
' Fehlernummer : ' 80010108' Fehlerzeile : ' -1'
2009-03-03 14:21:05 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Das aufgerufene Objekt wurde von den Clients getrennt.
' Fehlernummer : ' 80010108' Fehlerzeile : ' -1'
2009-03-03 14:21:05 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Das aufgerufene Objekt wurde von den Clients getrennt.
' Fehlernummer : ' 80010108' Fehlerzeile : ' -1'
2009-03-03 14:21:05 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Das aufgerufene Objekt wurde von den Clients getrennt.
' Fehlernummer : ' 80010108' Fehlerzeile : ' -1'
2009-03-03 14:21:05 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Das aufgerufene Objekt wurde von den Clients getrennt.
' Fehlernummer : ' 80010108' Fehlerzeile : ' -1'
2009-03-03 14:21:05 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Das aufgerufene Objekt wurde von den Clients getrennt.
' Fehlernummer : ' 80010108' Fehlerzeile : ' -1'
2009-03-03 14:21:05 : AutoItCOM , ein COM erreur ist aufgetreten ! Beschreibung : ' ' Beschreibung Windows : 'Das aufgerufene Objekt wurde von den Clients getrennt.
' Fehlernummer : ' 80010108' Fehlerzeile : ' -1'
Alles anzeigen