Hi,
sowas wurde sicher schon öfters behandelt aber ich hab noch nichts passendes gefunden.
ich hab einen Fehler:
Line 7455 (File Pfad.exe)
Error: Variable must be of type "Object".
So...mein Script hat aber gerade mal 1442 Zeilen
Wie finde ich denn raus wo genau der Fehler ist?
Der Fehler müsste in diesem Bereich liegen:
_TrayMenue()
$Updateflag = False
Global $iTimer = TimerInit(), $iTimerDiff = 0
Global $aFunktions[2][3] = [['_VPNStatus', 5000, 1], ['_CheckDrives', 20000, 1]]
HotKeySet("+!e", "_QuitConnect") ; Shift-Alt-e beendet die Connect
While Sleep(250)
$msgtray = TrayGetMsg()
Select
Case $msgtray=$traymapping
_MapDrives()
Case $msgtray= $traycapture
Run("Capture.exe")
Case $msgtray= $trayteamviewer
Run("C:\IT\TeamviewerQS_de.exe")
Case $msgtray= $trayticket
ShellExecute("http://it-support." & @LogonDNSDomain)
Case $msgtray= $traygpupdate
$gpupdate = Run("gpupdate", "", @SW_HIDE)
If $gpupdate > 0 Then
TrayTip("gpupdate", "gpupdate ausgeführt.",5,1)
Endif
EndSelect
$tray= _GetTrayMessage();Warte auf Dienste verbunden Traytip
If ($tray= 1) And ($Updateflag = FALSE) then
_checkUpdates()
$Updateflag = TRUE
EndIf
$iTimerDiff = TimerDiff($iTimer)
For $i = 0 To UBound($aFunktions) - 1 ; hier werden alle Funktionen aus dem Array überprüft
If $iTimerDiff / $aFunktions[$i][1] > $aFunktions[$i][2] Then ; ist die TimerDifferenz geteilt durch die Millisekunden größer als der Counter, dann...
;~ ConsoleWrite(StringFormat('+> Zeit: %i Sek., Aufruf Nr.: %i, Starte Funktion: "%s"\n', Int($iTimerDiff / 1000), $aFunktions[$i][2], $aFunktions[$i][0]))
$aFunktions[$i][2] += 1 ; den Counter erhöhen
Call($aFunktions[$i][0]) ; und die Funktion aufrufen
EndIf
Next
WEnd
Alles anzeigen
Aber das weiss ich nur weil es bevor ich das geändert hab funktioniert hat.
Vorher sah es so aus:
_TrayMenue()
$Updateflag = False
HotKeySet("+!e", "_QuitConnect") ; Shift-Alt-e beendet die Connect
Global $timer = TimerInit(), $counter, $Funktionen[2][2] = [['"_VPNStatus"',5000],['"_CheckDrives"',20000]]
While 1
If TimerDiff($timer) >= $Funktionen[$counter][1] Then ; In diesem Array kann man einstellen wie viel Zeit zwischen dem Aufruf der Funktionen liegen soll (Also nicht die Zeit zwischen den Skripten)
$timer = TimerInit() ; Zeitmarke wird neu gesetzt
Execute('Call(' & $Funktionen[$counter][0] & ')') ; Call ruft Funktionen auf, das erste im String ist der Name der Funktion, danach folgen die Parameter! Auf diese Art kann man Funktionen über Strings callen
If $counter = UBound($Funktionen) - 1 Then ; Wenn counter maximal groß ist, wird es wieder auf 0 gesetzt, ansonsten + 1
$counter = 0
Else
$counter += 1
EndIf
EndIf
;~ Aufpassen ob was am Trayicon passiert
$msgtray = TrayGetMsg()
Select
Case $msgtray=$traymapping
_MapDrives()
Case $msgtray= $traycapture
Run("Capture.exe")
Case $msgtray= $trayteamviewer
Run("C:\IT\TeamviewerQS_de.exe")
Case $msgtray= $trayticket
ShellExecute("http://it-support." & @LogonDNSDomain)
Case $msgtray= $traygpupdate
$gpupdate = Run("gpupdate", "", @SW_HIDE)
If $gpupdate > 0 Then
TrayTip("gpupdate", "gpupdate ausgeführt.",5,1)
Endif
EndSelect
$tray= _GetTrayMessage()
If ($tray= 1) And ($Updateflag = FALSE) then
_checkUpdates()
$Updateflag = TRUE
EndIf
WEnd
Alles anzeigen
Das mit dem Timer hat aber nicht funktioniert...
Hier ist der Thread zur Änderung:
https://autoit.de/index.php/Thread/46010-Timer-Problem/?postID=364958&highlight=In%2Bdiesem%2BArray%2Bkann%2Bman%2Beinstellen%2Bwie%2Bviel%2BZeit%2Bzwischen%2Bdem%2BAufruf%2Bder%2BFunktionen%2Bliegen%2Bsoll#post364976
Was macht man mit so einem Fehler?
EDIT:
Ein bißchen hab ich noch gefunden:
Func _VPNStatus()
MsgBox(0,"","VPNStatus",1)
;~ VPN und Netzwerkgeschwindigkeit ermitteln und Trayicon ensprechend einfärben
local $Testserver = @LogonDNSDomain
$Connection = Ping($Testserver, 5000)
$internetconnection= "www.google.de"
;~ ConsoleWrite("Speed "& $Connection & @CR)
If $internetconnection <= 0 Then ;~ wird nur gemacht wenn eine Internetverbindung besteht
TraySetIcon(@ScriptDir& "\Data\x.ico")
TraySetToolTip("Keine Verbindung zum Internet." & @CRLF & "Stellen Sie bitte eine verbindung zum Internet her.")
If $Connection <= 0 Then
TraySetIcon(@ScriptDir& "\Data\blue.ico")
TraySetToolTip("Keine Verbidnung zu COO." & @CRLF & "Bauen Sie die Verbindung bitte mit dem Palo Alto Client auf.")
EndIf
If $Connection > 0 Then
;~ TrayItems aktivieren wenn verbindung zum COO besteht. Sonst funktioniert das eh alles nicht
TrayItemSetState($traygpupdate,64)
TrayItemSetState($trayticket, 64)
TrayItemSetState($traymapping,64)
TrayItemSetState($traycapture,64)
If $Connection > 350 Then
TraySetIcon(@ScriptDir& "\Data\red.ico")
TraySetToolTip("Achtung!" & @CRLF & "Sehr langsame Verbindung!" & @CRLF & "Arbeit nur unter Schwierigkeiten möglich!")
_WriteLogData("UMTS Geschwindingkeitswarnung. Antwortzeit: " & $Connection)
ElseIf $Connection > 200 Then
TraySetIcon(@ScriptDir& "\Data\yellow.ico")
TraySetToolTip("Verbindung hergestellt." & @CRLF & "Die Verbindungsgeschwindigkeit ist:" & @CRLF & "gut")
ElseIf $Connection < 200 Then
TraySetIcon(@ScriptDir& "\Data\green.ico")
TraySetToolTip("Verbindung hergestellt." & @CRLF & "Die Verbindungsgeschwindigkeit ist:" & @CRLF & "Sehr gut")
TraySetToolTip("Verbindung hergestellt." & @CRLF & "Die Verbindungsgeschwindigkeit ist:" & @CRLF & "Sehr gut")
EndIf
EndIf
EndIf
$Connection=""
$netlogon=""
$Testserver=""
EndFunc
Alles anzeigen
Func _CheckDrives()
MsgBox(0,"","checkDrives",1)
$Testserver = @LogonDNSDomain
$Ping = Ping($Testserver,1000)
If $Ping > 0 Then
_AD_Open()
$aUser = _AD_GetUserGroups(@UserName)
If @LogonDNSDomain = "dom1.local" Then
_ArraySearch($aUser, "GRP_Abteilung_IT" , 0, 0, 0, 1)
If Not @error Then
$Laufwerk ="H:"
$Drive = $H_COO & @UserName
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
$Laufwerk = "S:"
$Drive = $S_COO
$Status=DriveStatus($Laufwerk)
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
;~ $Laufwerk ="X:"
;~ $Drive = $X_COO
;~ $Status=DriveStatus($Laufwerk)
;~ _DriveCheckState($Laufwerk, $Drive)
;~ $Laufwerk = ""
;~ $Drive = ""
EndIf
EndIf
If @LogonDNSDomain = "compass.local" Then
;~ ConsoleWrite('!> check compass.local!' & @CR)
_ArraySearch($aUser, "Mitarbeiter_CPP" , 0, 0, 0, 1)
If Not @error Then
$Laufwerk = "G:"
$Drive = $G_CPP
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk ="H:"
$Drive = $H_CPP & @UserName
_DriveCheckState($Laufwerk, $Drive)
EndIf
_ArraySearch($aUser, "GRP_IT-Abteilung" , 0, 0, 0, 1)
If Not @error Then
$Laufwerk = "S:"
$Drive = $S_COO
_DriveCheckState($Laufwerk, $Drive)
;~ $Laufwerk ="X:"
;~ $Drive = $X_COO
;~ _DriveCheckState($Laufwerk, $Drive)
EndIf
_ArraySearch($aUser, "CN=G-Betriebsrat" , 0, 0, 0, 1)
If Not @error Then
$Laufwerk = "O:"
$Drive = $O_Betriebsrat
_DriveCheckState($Laufwerk, $Drive)
EndIf
_ArraySearch($aUser, "CN=G-Buchhaltung" , 0, 0, 0, 1)
If Not @error Then
$Laufwerk = "L:"
$Drive = $L_Buchhaltung
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = "M:"
$Drive = $M_Buchhaltung
_DriveCheckState($Laufwerk, $Drive)
EndIf
EndIf
If @LogonDNSDomain = "dom2.local" Then
$_PKV_Alle = _ArraySearch($aUser, "CN=Alle" , 0, 0, 0, 1)
$QPP = _ArraySearch($aUser, "CN=AbteilungQPP" , 0, 0, 0, 1)
$QPPZ = _ArraySearch($aUser, "CN=AbteilungQPPZentrale" , 0, 0, 0, 1)
If $PKV_Alle <> @error Then
$Laufwerk = "V:"
$Drive = $V_PKV
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
$Laufwerk = "W:"
$Drive = $W_PKV
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
ElseIf $QPP == @error Then
$Laufwerk = "R:"
$Drive = $R_PKV
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
$Laufwerk = "S:"
$Drive = $S_PKV
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
$Laufwerk = "T:"
$Drive = $T_PKV
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
EndIf
If $QPP <> @error then
$Laufwerk = "Q:"
$Drive = $Q_QPP
_Laufwerk_verbinden($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
EndIf
If $QPPZ <> @error then
$Laufwerk = "Q:"
$Drive = $Q_QPP
_Laufwerk_verbinden($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
EndIf
EndIf
If @LogonDNSDomain = "dom3.local" Then
;~ ConsoleWrite('!> check medicproof!' & @CR)
_ArraySearch($aUser, "CN=Alle" , 0, 0, 0, 1)
If Not @error Then
$Laufwerk = "H:"
$Drive = $H_MP
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
$Laufwerk = "Q:"
$Drive = $Q_MP
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
$Laufwerk = "P:"
$Drive = $P_MP
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
$Laufwerk = "Y:"
$Drive = $Y_MP
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
$Laufwerk = "Z:"
$Drive = $Z_MP
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
EndIf
EndIf
If @LogonDNSDomain = "dom4.local" Then
;~ ConsoleWrite('!> check medcom!' & @CR)
_ArraySearch($aUser, "CN=MC-Mitarbeiter" , 0, 0, 0, 1)
If Not @error Then
$Laufwerk = "M:"
$Drive = $M_MC
_DriveCheckState($Laufwerk, $Drive)
$Laufwerk = ""
$Drive = ""
EndIf
EndIf
_AD_Close()
ElseIf $Ping = 0 Then
Sleep(1000)
$Ping2 = Ping($Testserver,5000)
If $Ping2 = 0 Then
Sleep(1000)
$Ping3 = Ping($Testserver,10000)
If $Ping3 = 0 Then
_unmappDrives()
EndIf
EndIf
EndIf
EndFunc
Alles anzeigen
Funktioniert bis nach dem ersten Aufruf con _CheckDrives. Danach kommt der Fehler. Nachdem die msgbox mit checkdrives verschwindet stürzt es ab
Noch sehe ich aber nicht wo ich da einen Fehler eingebaut hab