1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Camulus

Beiträge von Camulus

  • Uninstallstring auslesen

    • Camulus
    • 20. September 2016 um 09:43

    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.

  • Netzlaufwerke verbinden am liebsten "dynamisch"

    • Camulus
    • 20. September 2016 um 09:13

    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 verbunden

    z.B. so

    Spoiler anzeigen
    Code
    Global $S_XYZ					=	IniRead(@ScriptDir & "\drives.ini","Drives", "S_XYZ","")
    Global $H_XYZ					=	IniRead(@ScriptDir & "\drives.ini","Drives", "H_XYZ","")
    Global $X_XYZ					=	IniRead(@ScriptDir & "\drives.ini","Drives", "X_XYZ","")



    Gemappt werden die dann so:

    Spoiler anzeigen
    Code
    Func _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 = ""
    .....
    Alles anzeigen


    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:


    Code
    S_XYZ="\\coo.local\dfs\software"
    X_XYZ="\\coo.local\dfs\XYZ"
    H_XYZ="\\coo.local\dfs\Home$\"

    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 :huh:


    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 :S:D

  • Uninstallstring auslesen

    • Camulus
    • 20. September 2016 um 07:42

    Danke euch aber so ganz erschliesst es sich mir noch nicht.

    Bitnugger:
    Das klappt leider auch nicht. Oder ich mache was falsch

    Der 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

  • Uninstallstring auslesen

    • Camulus
    • 19. September 2016 um 16:44

    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 nicht :S

    Hat da jemand von euch eine schnelle Lösung?


    Code
    #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
    Alles anzeigen
  • Warum klappt das nur einmal?

    • Camulus
    • 22. Mai 2015 um 12:56

    habs eben gefunden...SoundStop;)

    Danke

  • Warum klappt das nur einmal?

    • Camulus
    • 22. Mai 2015 um 12:50

    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?

    Code
    #include <Sound.au3>
    Local $aSound = _SoundOpen( @ScriptDir & "\Jeopardy.mp3" )
    
    
    While 1
    	If _IsPressed ("04") Then
    
    
    		_SoundPlay($aSound)
    		While _IsPressed("04")
    			Sleep(250)
    		WEnd
    		_SoundClose($aSound)
    	Sleep(250)
    	EndIf
    WEnd
    Alles anzeigen
  • Laufwerke nach AD Gruppe mappen

    • Camulus
    • 3. Dezember 2014 um 11:25

    Ok Danke.
    Dann räum ich mal was auf;)

  • Error: Variable must be of type "Object".

    • Camulus
    • 3. Dezember 2014 um 08:20

    Entwarnung. Momentan gehts.
    Warum weiss ich nicht aber es geht 8o

  • Laufwerke nach AD Gruppe mappen

    • Camulus
    • 3. Dezember 2014 um 08:17

    Hi,

    ich hab noch ein Problemchen. Damit das nicht zu unübersichtlich wird mach ich mal lieber einen neuen Thread auf.

    Spoiler anzeigen
    Code
    If @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
    Alles anzeigen

    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 Q 8|

    Sieht 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

  • Error: Variable must be of type "Object".

    • Camulus
    • 3. Dezember 2014 um 07:41

    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.;)

  • Error: Variable must be of type "Object".

    • Camulus
    • 3. Dezember 2014 um 07:15

    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

  • Error: Variable must be of type "Object".

    • Camulus
    • 2. Dezember 2014 um 19:30

    Ah. Ok, das wusste ich nicht.
    unkompiliert läufts ohne Probleme. Wenn ich es kompiliere und auf einem Testnotebook ausführe gehts nicht.

  • Error: Variable must be of type "Object".

    • Camulus
    • 2. Dezember 2014 um 14:38

    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
    _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. :whistling:

    Vorher sah es so aus:

    Code
    _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:


    Code
    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


    Code
    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

  • Timer Problem

    • Camulus
    • 2. Dezember 2014 um 11:47

    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

  • Timer Problem

    • Camulus
    • 1. Dezember 2014 um 12:55

    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.

  • Timer Problem

    • Camulus
    • 1. Dezember 2014 um 11:36

    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:


    Code
    If TimerDiff($timer) >= $Funktionen[$counter][1] Then ;
            $timer = TimerInit() ;
    
    
            Execute('Call(' & $Funktionen[$counter][0] & ')') ;



    Sähe dann so aus:

    Code
    If 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?

  • Timer Problem

    • Camulus
    • 1. Dezember 2014 um 11:08

    Argh.... das ist echt Murks wenn man das nicht regelmäßig macht.
    Also so:

    Code
    Global $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
    Alles anzeigen


    ich probier mal etwas rum...vielleicht fällt es mir dabei wieder ein ?(;)

  • Timer Problem

    • Camulus
    • 1. Dezember 2014 um 10:34

    Jaaa...jetzt bin ich völlig verwirrt.
    Da liegen immer Monate dazwischen. Ich hab keine Ahnung wie man eine Variable in ein Array umwandelt 8o

  • Timer Problem

    • Camulus
    • 1. Dezember 2014 um 09:54

    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.

  • Timer Problem

    • Camulus
    • 1. Dezember 2014 um 09:41

    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
    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
    Alles anzeigen

    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. :whistling:

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™