Danke wird getestet;)
Woher die Information kommt ist mir in dem Fall egal.
Die Kollegen müssen da 140 Notebooks umstellen und wenn ich denen so viel geklicke erparen kann um so besser.
Beiträge von Camulus
-
-
Hallo,
vor etwas längerem hab ich mal diesen Thread erstellt:
https://autoit.de/index.php/Thre…erke-verbinden/Das Tool gibt es immer noch und da Gruppenrichtlinien scheinbar auch nicht der Weisheit letzter Schuss sind überlege ich dranb es weiter zu entwickeln.
Momentan stehen die Laufwerke und die Pfade in einer ini Datei und werden ausgelsen und demnach verbundenz.B. so
Spoiler anzeigen
Gemappt werden die dann so:
Spoiler anzeigen
Code
Alles anzeigenFunc _MapDrives() _AD_Open() $aUser = _AD_GetUserGroups(@UserName) Sleep(250) If @LogonDNSDomain = "xyz.local" Then _ArraySearch($aUser, "GRP_Abteilung_IT" , 0, 0, 0, 1) If Not @error Then $Laufwerk ="H:" $Drive = $H_xyz & @UserName _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "S:" $Drive = $S_xyz _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" .....
was ganz sexy ist dass die Laufwerke auch regelmößig auf vorhendensein geprüft werden und falls nicht neu verbunden.
Was mich noch ärgert ist dass alles recht statisch ist. Dumm ist dass ich kein Entwickler bin aber dennoch der einzige der AutoIT kennt
die ini Datei sieht so aus:
Gibt es eine Möglichkeit das alles über die ini Datei zu "steuern"?
Wenn z.B. ein Laufwerk dazu kommt oder weg fällt?
Dass man das dann "nur" in der ini Datei anpasst und das Tool dieund Anzahl, Buchstaben und Pfade der Laufwerke und vielleicht auch die zugehörigen AD Gruppen "ausliesst".Und man nicht für jedes Laufwerk einen Programmschnipsel braucht? Sondern eher eine Schleife die dann x-mal (jenachdem was in der ini steht) das gleiche tut?
Obwohl es seit Jahren "angeblich" nich mehr durch uns supportet wird muss man eben doch alle Jubeljahre mal was ändern und gerade diese Woche hätte es richtig geknallt wenn ich nicht da gewesen wäre und noch mal eben was hätte anpassen können
Oder ist die Idee völliger Quatsch und es gibt einen wesentlich besseren Weg?
Ach, das alles für 4 Domänen und 4 ADs aus denen die Gruppen ausgelesen werden
-
Danke euch aber so ganz erschliesst es sich mir noch nicht.
Bitnugger:
Das klappt leider auch nicht. Oder ich mache was falschDer Schlüsselname ist ja nicht der Name des Programms:
Beim testen habe ich jetzt mal den BIzagi Modeller bei mir genommen
Der ist unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{678285E9-FA95-4851-8E2D-0CA61A61B5FD}und den finde ich dann nicht.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CCleaner
z.B. funktioniert -
Hallo,
es ist mal wieder soweit dass ich nach längerer Abstinenz mal wieder ein kleiens Wunder vollbringen darf.
Es soll ein Programm in diesem Fall Workplace Protect von Fujitsu Siemens deinistalliert werden.Leider ist der Uninstall String nicht immer der selber also muss ich ihn irgendwie auslesen.
Gefunden hab ich das:
https://www.autoitscript.com/forum/topic/16…-from-registry/Das wäre dann aber mit Kanonen auf Spatzen geschossen.
Und den Code unten auf einer anderen Seite.
Das Problem ist dass das obere es findet aber viel zu viel ist und ich es auch nicht durchschaue.
Das andere findet den String nichtHat da jemand von euch eine schnelle Lösung?
Code
Alles anzeigen#include <MsgBoxConstants.au3> $sBase = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" $iEval = 1 $sSearch = "Workplace" While 1 $sUninst = "" $sDisplay = "" $sCurrent = RegEnumKey($sBase, $iEval) If @Error Then ExitLoop $sKey = $sBase & $sCurrent $sDisplay = RegRead($sKey, "DisplayName") If StringRegExp($sDisplay, ".*" & $sSearch & ".*") Then $sUninst = RegRead($sKey, "UninstallString") If $sUninst Then $sMsg = MsgBox(35, "Result", "Are you sure you want to uninstall " & $sDisplay & "?") If $sMsg = 6 Then RunWait($sUninst) ElseIf $sMsg = 2 Then ExitLoop EndIf EndIf EndIf $iEval += 1 WEnd
-
habs eben gefunden...SoundStop;)
Danke
-
Hallo,
ich brauch in der IT einfach eine Möglichkeit einen bestimmten Sound zu Zeitpunkt x abzuspielen:)
Aber das klappt nur einmal und ich weiss nicht warum.Kann mir da mal jemand auf die Sprünge helfen?
-
Ok Danke.
Dann räum ich mal was auf;) -
Entwarnung. Momentan gehts.
Warum weiss ich nicht aber es geht -
Hi,
ich hab noch ein Problemchen. Damit das nicht zu unübersichtlich wird mach ich mal lieber einen neuen Thread auf.
Spoiler anzeigen
Code
Alles anzeigenIf @LogonDNSDomain = "pkv.intern" Then $QPP = _ArraySearch($aUser, "CN=AbteilungQPP" , 0, 0, 0, 1) If $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 $QPP = _ArraySearch($aUser, "CN=AbteilungQPP" , 0, 0, 0, 1) $QPPZ = _ArraySearch($aUser, "CN=AbteilungQPPZentrale" , 0, 0, 0, 1) If $QPP <> @error OR $QPPZ <> @error then $Laufwerk = "Q:" $Drive = $Q_QPP _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" EndIf $_PKV_Alle = _ArraySearch($aUser, "CN=Alle" , 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 = "" EndIf EndIf
Lange Rede kurzer Sinn:
Die User in der Gruppe alle sollen V und W bekommen.
Die die nicht in Abteilung QPP sind R,S,T.
Die die in AbteilungQPP oder AbteilungQPPzentrale sind Q.Das ist alles nicht so glücklich aber die AD Struktur gibt es nicht anders her
Das funktioniert aber irgendwie nicht. Mein Testuser ist in alle und Abteilung QPP und bekommt nur QSieht einer von euch wo ich den Fehler eingebaut hab?
UPDATE: Wir kommen der Sache näher. Ich bekomme V, W und obwohl ich Q nicht bekommen sollte. User ist nicht mehr in Abteilung QPP
-
Naja...ich include es also bejahe ich das mal wenn ich es nicht völlig mißverstanden habe.
Anbei mal das ganze Script.
water: Wie denn z.B.? Mein Problem ist dass ich das Tool nur alle paar Monate mal ändern muss. Zwischenzeitlich hab ich so gut wie nichts mit programmieren zu tun und vergesse manches wieder. Das dauert dann immer ein zwei Tage bis ich mich da wieder halbwegs zurecht finde und muss euch mit "dumme Fragen" löchern.;)
-
AO?
Meinst du AD.au3?Ich hab eben die neuste Version mit kompiliert.
UPDATE:
Es liegt am CheckDrives. Wenn keine VPN Verbindung besteht kommt der Fehler -
Ah. Ok, das wusste ich nicht.
unkompiliert läufts ohne Probleme. Wenn ich es kompiliere und auf einem Testnotebook ausführe gehts nicht. -
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:
Code
Alles anzeigen_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
Aber das weiss ich nur weil es bevor ich das geändert hab funktioniert hat.
Vorher sah es so aus:
Code
Alles anzeigen_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
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#post364976Was macht man mit so einem Fehler?
EDIT:
Ein bißchen hab ich noch gefunden:Code
Alles anzeigenFunc _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
Code
Alles anzeigenFunc _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
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
-
Danke euch!
Jetzt geht`s. Ich hab zwar noch nicht 100%ig verstanden was da passiert aber es passiert so wie es soll;)
Wenn mal Ruhe ist führe ich mir das nochmal zu Gemüte -
Ok, danke.
Aber wozu muss der Counter hochzählen wie oft die Funktion aufgerufen wurde?Das ganze Teil soll eigentlich immer in Hintergrund laufen. Und halt eben die Verbindung und die Laufwerke regelmäßig checken.
-
Jetzt hab ich endlich auch mal den originalthread wieder gefunden: Programm soll VPN Eregnis abwarten[/url]
Also was meine Verständnis sprengt:
Array mit 2 Teimern ist klar....immerhin:)
Dann muss ich beide Abfragen...auch klar....
Das würde hier passieren:CodeIf TimerDiff($timer) >= $Funktionen[$counter][1] Then ; $timer = TimerInit() ; Execute('Call(' & $Funktionen[$counter][0] & ')') ;
CodeIf TimerDiff($timer[0]) >= $Funktionen[$counter][1] Then ; Wozu hier die [1] ist krieg ich auch nicht mehr in die Birne $timer[0] = TimerInit() ; Zeitmarke wird neu gesetzt Execute('Call(' & $Funktionen[$counter][0] & ')') ; [url='https://autoit.de/index.php/Thread/45369-Programm-soll-VPN-Eregnis-abwarten/?postID=360225&highlight=In%2Bdiesem%2BArray%2Bkann%2Bman%2Beinstellen%2Bwie%2Bviel%2BZeit%2Bzwischen%2Bdem%2BAufruf%2Bder%2BFunktionen%2Bliegen%2Bsoll#post360225']
und das gleich dann nochmal für $timer[1]...richtig?
-
Argh.... das ist echt Murks wenn man das nicht regelmäßig macht.
Also so:Code
Alles anzeigenGlobal $timer[2] = TimerInit(), $counter, $Funktionen[2][2] = [['"_VPNStatus"',5000],['"_CheckDrives"',20000]] While 1 If TimerDiff($timer[1]) >= $Funktionen[$counter][1] Then ; da verließen sie ihn :D $timer = TimerInit() ; 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
ich probier mal etwas rum...vielleicht fällt es mir dabei wieder ein
-
Jaaa...jetzt bin ich völlig verwirrt.
Da liegen immer Monate dazwischen. Ich hab keine Ahnung wie man eine Variable in ein Array umwandelt -
Na dann war meine Befürchtung ja richtig. Ich versuch mich da mal wieder reinzuwühlen.
Danke.
Wenn es nicht klappt melde ich mich nochmal. -
Hallo zusammen,
es ist mal wieder soweit. Vor vielen vielen Moden hab ich was mit Hilfe von euch gebastelt und jetzt geht was nicht und ich soll rausfinden was. Da ich aber mittleweile eigentlich garnicht mehr programmiere. Hab ich schon wieder alles vergessen und steh jetzt auf dem Schlauch.
Das ist der Schnipsel:
Code
Alles anzeigenGlobal $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
Ich hab in dieses _CheckDrives eine MsgBox eingebaut um zu sehen ob es aufgerufen wird. Wird es aber nicht alle 20 Sekunden.
Ist das soweit alles richtig? Ich kann mich nicht mehr wirklich dran erinnern.