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

  • Programm soll VPN Eregnis abwarten

    • Camulus
    • 30. Juli 2014 um 11:43

    Ah Danke.
    Jetzt kommt der Fehler schonmal nciht mehr..
    Es funktioniert zwar noch nicht, bzw. ruft es die Funktion noch nicht auf aber es geht vorran :rolleyes:

  • Programm soll VPN Eregnis abwarten

    • Camulus
    • 30. Juli 2014 um 11:29

    Ich hab eine Alternative zu AdlibRegister gefunden: So siehst das Original aus:


    Spoiler anzeigen
    [autoit]

    Global $timer = TimerInit(), $counter, $Funktionen[2][2] = [['"Test", 0, "Test1", "blabla1"', 1000], ['"Test", 0, "Test2", "blabla2"', 2000]]
    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 EndIfWEnd
    Func Test($Flag, $Title, $Text) MsgBox($Flag, $Title, $Text)EndFunc

    [/autoit]

    So meine Anpassungen bisher:

    Spoiler anzeigen
    [autoit]

    Global $timer = TimerInit(), $counter, $Funktionen[2][2] = [["VPN_Status",0,_VPNStatus, 10000], ["Check_drives",0,_CheckDrives, 20000]]

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

    While 1

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

    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

    [/autoit]

    Den Fehler den ich bekomme:
    (141) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    in dieser Zeile:

    [autoit]

    Global $timer = TimerInit(), $counter, $Funktionen[2][2] = [["VPN_Status",0,_VPNStatus, 10000], ["Check_drives",0,_CheckDrives, 20000]]

    [/autoit]


    Ich muss aber feststellen dass das meinen Horizont sprengt 8|
    Hier steige ich schon kognitiv aus:

    [autoit]

    $timer = TimerInit(), $counter, $Funktionen[2][2] = [["VPN_Status",0,_VPNStatus, 10000], ["Check_drives",0,_CheckDrives, 20000]]

    [/autoit]


    Dummerweise muss ich nur jedes halbe Jahr - Jahr mal was programmieren, deswegen dauert es auch immer recht lange bis ich mich erinnere wie dieses und jenes zu lesen ist. :wacko: 

    Kann mir da mal jemand auf die Sprünge helfen?

  • Programm soll VPN Eregnis abwarten

    • Camulus
    • 29. Juli 2014 um 12:15

    Hi ihr,

    ich habe hier ein kleines Tool das damals unsere VPN Verbinung aufgebaut hat, Netzlaufwerke verbunden usw.
    Jetzt sind wir allerdings dabei auf PaloAlto umzustellen und die bringt den GlobalProtect Client mit. Den kann man nicht wirklich irgendwie beeinflussen oder steuern.
    Also müssen unsere User künftig die VPN Verbindung über den PA Client aufbauen und genau dann soll das Programm dafür sorgen dass Laufwerke verbundnen werden usw.

    Das alles hab ich mit AdlibRegister gelöst.
    Wer sich das antun will, anbei der Code, ist noch etwas wüst, weil ich verschiedene Möglichkeiten getestet hab.

    Vielleicht ist das aber der völlig falsche Ansatz.

    Das Problem ist dass ich den Client nicht steueren kann wir unseren Usern aber zu viel Klickerei ersparen wollen. Also sollten die eigentlich nur die VON Verbindung aufbauen und den Rest soll das Programm machen.
    Nur weiss ich keinen besseren Weg festzustellen ob eine VPN Verbindung besteht als ein Ping.

    Hat jemand eine bessere Idee?

    Dateien

    connect.txt 46,11 kB – 390 Downloads
  • Tray überwachen

    • Camulus
    • 13. Februar 2014 um 08:02

    Danke chip.
    Funktioniert schon fast. Allerdings wird die Funtion _CreateGui nicht aufgerufen.

    Habs noch ein bißchen umgebaut:


    [autoit]

    While 1
    Sleep(1000)
    $erg = _GetTrayMessage()

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

    If $erg == 1 Then ExitLoop
    MsgBox(0,"","Loop verlassen",1)
    _CreateGUI()
    _MapDrive()
    EndIf
    Wend
    Func _GetTrayMessage()
    Local $wl, $List, $LastList = ''
    $List = ''
    $wl = WinList("[class:tooltips_class32]")
    For $n = 1 To $wl[0][0]
    If BitAND(WinGetState($wl[$n][1]), 2) Then
    $List &= WinGetTitle($wl[$n][1])
    EndIf
    Next
    If $List = ("Dienste verbunden") Then
    MsgBox(0,"","Dienste verbunden",1)
    Return 1
    MsgBox(0,"","weiter",1) EndIF
    EndFunc ;==>_GetTrayMessage

    [/autoit]


    Die Messagebox mit weiter kommt nicht und ich verstehe nicht ganz warum ?(

  • Fehlemeldung _winapiconstant

    • Camulus
    • 12. Februar 2014 um 15:25

    hab mir mal die aktuellen AD Scripts runtergladen und schon gehts wieder

  • Fehlemeldung _winapiconstant

    • Camulus
    • 12. Februar 2014 um 14:58

    das ist recht groß....
    ich glaub die bereiche um die es geht sind:

    Spoiler anzeigen
    [autoit]

    #include <AD.au3>
    Func _GetUserAD()
    ;~ Benutzeraten aus Abfragen, wichtig für "Passwort läuft ab" AnzeigenGlobal $UserAccountControl, $samAccountName,$FirstName, $LastName, $title, $PasswordLastChanged, $IsAccountLocked, $DaysLeft,$msg,$icon ,$AnzeigeDatPwdExpires, $CounterLocal $Found = 0$AnmeldeUser = @UserName
    ;~ $LogonServer = "dc.compass.local";~ $LogonServer = @LogonDNSDomain$LogonServer = @LogonDomain
    $serverName = $LogonServer$baseStr = "DC="& @LogonDomain&",DC=local"
    ;~ $filterStr = "(&(objectCategory=Person) (objectClass=user)"$filterStr = "(&(objectCategory=Person)(objectClass=user)(sAMAccountName=" & @UserName & "))"$ado = ObjCreate("ADODB.Connection") ; erstellt eine Instanz des Objektes ADODB.Connection$ado.Provider = "ADSDSOObject"
    $ado.Open ("ADS-Search" )
    $adoCmd = ObjCreate("ADODB.Command")$adoCmd.ActiveConnection = $ado$adoCmd.Properties("Page Size") = 1000$adoCmd.Properties("Cache Results") = 1$adoCmd.CommandText = "<LDAP://" & $serverName & "/" & $baseStr & ">;" & $filterStr & ";ADsPath;subtree"
    _WriteLogData("Benutzereinträge für " & @UserName & " werden gesucht, auf Server " & StringReplace($LogonServer,"",""))_WriteLogData("Benutzereinträge für " & @UserName & " werden gesucht, auf Server " & $LogonServer)_WriteLogData("Funktionsaufruf lautet : " & $adoCmd & " ")
    $objectList = $adoCmd.Execute
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Ein Moment bitte," & @CRLF & @CRLF & "Ihre Benutzereinträge werden gesucht.")
    $Counter = 1
    While Not $objectList.EOF()
    $user = ObjGet($objectList.Fields("ADsPath").value)
    $samAccountName = $User.samAccountName
    If stringlower($samAccountName) = StringLower($AnmeldeUser) Then
    $UserAccountControl = $user.UserAccountControl $FirstName = $User.FirstName $LastName = $User.LastName $title = $User.title $PasswordLastChanged = $User.PasswordLastChanged ;pwdLastSet $IsAccountLocked = $User.IsAccountLocked

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

    _WriteLogData("Benutzereintrag für " & $FirstName & " " & $LastName & " wurde gefunden. Accountcontrol = " & $UserAccountControl) $DaysLeft = _DatumBerechnen($PasswordLastChanged)

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

    If $DaysLeft <= 10 Then
    Switch $DaysLeft Case 1 GUICtrlSetBkColor($lbl_info, 0xf20000) MsgBox (16, "Achtung","Ihr Passwort läuft heute ab" & @CRLF & @CRLF & "Bitte ändern Sie das Passwort umgehend!") Case 2 GUICtrlSetBkColor($lbl_info, 0xFF9900) MsgBox (48, "Achtung","Ihr Passwort läuft morgen ab" & @CRLF & @CRLF & "Bitte ändern Sie das Passwort!") Case Else GUICtrlSetBkColor($lbl_info, 0xFFFF00) MsgBox(64,"Achtung","Ihr Passwort läuft in " & $DaysLeft & " Tagen, am " & $AnzeigeDatPwdExpires & ", ab." & @CRLF & @CRLF & "Bitte ändern Sie das Passwort bei der nächsten Gelegenheit!") EndSwitch
    GUICtrlSetBkColor($lbl_info, 0xD7E4F2) EndIf EndIf $objectList.MoveNext() $Counter += 1

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

    Wend

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

    If $DaysLeft > 10 Then GUICtrlSetBkColor($lbl_info, 0xDAF2D7) GUICtrlSetData($lbl_info, @CRLF & "Information!"& @CRLF & @CRLF & "Ihr Passwort ist noch " & $DaysLeft &" Tage gültig, " & @CRLF & "es läuft am " & $AnzeigeDatPwdExpires & " ab." & @CRLF & "Es ist nicht erforderlich das Passwort zu ändern.") Sleep(5000)
    EndIf GUICtrlSetData($lbl_info, @CRLF & @CRLF & @CRLF &"Suche nach Benutzerdaten abgeschlossen.") Sleep(500) GUICtrlSetBkColor($lbl_info, 0xD7E4F2) GUICtrlSetData($lbl_info, @CRLF & @CRLF & @CRLF &"Verbindung der Netzlaufwerke wird vorbereitet.")
    $UserAccountControl=""$samAccountName=""$FirstName=""$LastName=""$title=""$PasswordLastChanged=""$IsAccountLocked=""$DaysLeft=""$msg=""$icon=""$AnzeigeDatPwdExpires=""$Counter=""EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Fehlemeldung _winapiconstant

    • Camulus
    • 12. Februar 2014 um 14:49

    Hi,

    ich bin gerade etwas erschüttert, wenn ich mein Script ausführe bekomme ich diese Meldung:

    [autoit]

    >"C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\a-b.wagener\Desktop\Connect V. 1.1\COOConnect.au3" /UserParams +>14:47:31 Starting AutoIt3Wrapper v.2.1.4.4 SciTE v.3.3.7.0 ; Keyboard:00000407 OS:WIN_81/ CPU:X64 OS:X64 Environment(Language:0407 Keyboard:00000407 OS:WIN_81/ CPU:X64 OS:X64)>Running AU3Check (3.3.10.2) from:C:\Program Files (x86)\AutoIt3"C:\Users\a-b.wagener\Desktop\Connect V. 1.1\AD.au3"(4128,68) : warning: $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM: possibly used before declaration. _WinAPI_FormatMessage($__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^"C:\Users\a-b.wagener\Desktop\Connect V. 1.1\AD.au3"(4128,68) : error: $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM: undeclared global variable. _WinAPI_FormatMessage($__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^"C:\Users\a-b.wagener\Desktop\Connect V. 1.1\AD.au3"(985,55) : error: _ArrayCreate(): undefined function. $oAD_Group.GetInfoEx(_ArrayCreate("primaryGroupToken") ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^C:\Users\a-b.wagener\Desktop\Connect V. 1.1\COOConnect.au3 - 2 error(s), 1 warning(s)!>14:47:32 AU3Check ended. Press F4 to jump to next error.rc:2+>14:47:32 AutoIt3Wrapper Finished..>Exit code: 2 Time: 0.639

    [/autoit]


    Das hat immer funktioniert.
    kann mir jemand sagen was ich da deklarieren muss?

  • Tray überwachen

    • Camulus
    • 12. Februar 2014 um 14:27

    Wir kommen der Sache näher:


    So siehts aus:

    Spoiler anzeigen
    [autoit]

    While 1
    _GetTrayMessage() Sleep(1000)

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

    WEnd

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

    Func _GetTrayMessage()
    Local $wl, $List, $LastList = ''
    $List = '' $wl = WinList("[class:tooltips_class32]")
    For $n = 1 To $wl[0][0] If BitAND(WinGetState($wl[$n][1]), 2) Then $List &= WinGetTitle($wl[$n][1]) EndIf Next If $List =("Dienste verbunden") Then _CreateGUI() _MapDrive() EndIf

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

    EndFunc

    [/autoit]


    Wie verlasse ich die While Schleife wenn die "Dienste verbunden" wurden?

  • Tray überwachen

    • Camulus
    • 12. Februar 2014 um 13:39

    Hi,

    wir sind dabei auf einen neue Firewall umzustellen die einen eigenen Client mitbringt. Dieser Client liegt als Tray in der Taskbar und wird auch von da gesteuert. Gibt es eine Möglichkeit einen TrayTip zu überwachen?
    Also wenn Traytip mit der und der Message kommt dann mach dies und jenes.

    EDIT:
    Hab was gefunden:
    [ neu ] Tooltip (Win Tool Tips auslesen)

    das muss ich dann nur so weit umbiegen dass es nicht in die Konsole geschrieben wird sondern abgefragt.


    EDIT2:

    Um das mal genauer zu erklären.
    Ich hätte gerne dass das programm im Hintergrund läuft und nichts macht bis das TryTip "Verbunden" erscheint und dann los legt mit verschiedenen Funktionen.
    Noch krieg ich das aber nicht so hin.
    Mein kläglicher Versuch bisher:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>Opt("GUIOnEventMode", 1)
    While 1 Sleep(100) ; Sleep to reduce CPU usageWEnd
    Func GP_Connect()_GetTrayMessage()EndFunc

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

    Func _GetTrayMessage() Local $wl, $List, $LastList = ''

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

    While 1 $List = '' $wl = WinList("[class:tooltips_class32]");get all th etooltips
    For $n = 1 To $wl[0][0] If BitAND(WinGetState($wl[$n][1]), 2) Then;if visible $List &= WinGetTitle($wl[$n][1]); read the title, which for a tooltip is the text EndIf Next If $List =("Verbunden") Then MsgBox(0,"","Tadaaaa") EndIf;~ If $List <> $LastList And $List <> '' Then;~ ConsoleWrite($List & @CRLF);~ $LastList = $List;~ EndIfWEnd
    EndFunc ;==>_Exit

    [/autoit]




    ich erinnere mich dunkel dass sowas mit dem OnEventMode gehen müsste.
    GUIOnEventMode ist aber Quastch oder? Dazu bräuchte ich ja eine Gui.
    Kann mir da mal jemand auf die Sprünge helfen?


    Das Problem ist dass ich kein Entwickler bin, ich hab zwar in grauer Vorzeit mal programmieren gelernt aber brauch es auch nur alle jubeljahre mal :pinch: 

  • *.avi Datei abspielen

    • Camulus
    • 29. Januar 2014 um 16:22

    Danke euch.
    Ich wühl mich da mal durch

  • *.avi Datei abspielen

    • Camulus
    • 28. Januar 2014 um 10:31

    Falls sich noch jemand findet der gewillt ist Fragen zu beantworten:

    kann es sein dass es mit komprimierten Dateien generell nicht geht?

  • *.avi Datei abspielen

    • Camulus
    • 28. Januar 2014 um 09:58

    Das hab ich auch gefunden.

    Die Frage ist aber welchen Codec ich brauche das steht da ja nunmal nicht.

    Die Datei die ich abspielen will hat offensichtlich den falschen Codec.

    Ich dachte immer Foren wären dazu da um Fragen zu stellen. Wenns eure Zeit nicht zulässt die zu beantworten dann lasst es einfach bleiben.

  • *.avi Datei abspielen

    • Camulus
    • 28. Januar 2014 um 08:05

    Naja, die Frage war eher welchen Codec ich brauche. ;)

  • *.avi Datei abspielen

    • Camulus
    • 27. Januar 2014 um 11:41

    Hi,

    ich würde gerne mit GUICtrlCreateAvi eine AVI Datei abspielen.
    Bekomme aber diesen Fehler:
    [Blockierte Grafik: http://img21.myimg.de/avi55088c580b.png] 

    Snippet:

    Spoiler anzeigen
    [autoit]

    Example()
    Func Example() Local $avi, $buttonstart, $buttonstop, $msg
    GUICreate("GUICtrlCreateAvi-Tut", 360, 200) $avi = GUICtrlCreateAvi(@ScriptDir & "\RDgo.avi", 10, 10, 10) $buttonstart = GUICtrlCreateButton("Start", 95, 150, 75, 22) $buttonstop = GUICtrlCreateButton("Stopp", 195, 150, 75, 22)
    GUISetState() ; Die Schleife wiederholt sich, bis der Benutzer eine Beenden-Aktion auslöst While True $msg = GUIGetMsg() Switch $msg Case -3 ExitLoop Case $buttonstart GUICtrlSetState($avi, 1) Case $buttonstop GUICtrlSetState($avi, 0) EndSwitch WEndEndFunc ;==>Example; Ende

    [/autoit]


    Kann mir jemand sagen welchen Codec das avi File haben muss?

  • Fehler im Script oder ein anderes Problem?

    • Camulus
    • 12. Juli 2012 um 11:16

    Ich hab ein bißchen aufgeräumt. Man möge mir das Pushen nachsehen aber ich habe noch ein anderes Problem entdeckt.

    Hintergrund.
    Es gibt ein Tool das eine VPN verbindung aufbaut, bunte Bildchen in einer GUI zeigt und die Funktion aus diesem Script aufruft.
    Getrennt habe ich das wegen der seperaten Updatemöglichkeit.
    Ich hab doch richtig verstanden dass es dann bei jeder Programmausführung neu includet wird oder? Wird das vielleicht irgendwo gecacht?

    Je nach AD Grupopenzugehörigkeit werden Netzlaufwerke gemappt.

    So siehts momentan aus:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=Data\netzlaufwerk.ico
    #AutoIt3Wrapper_Outfile=Mapping.exe
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <AD.au3>
    #include <Array.au3>
    ;~ #include <WriteLogData.au3>
    ;~ #include <GUIConstantsEx.au3>

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

    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;~ Damit man sich im Code nicht den Wolf sucht wenn mal was geändert wird packe ich die Netzwerkpfade in Variablen. Also muss es wenn nur hier geändert werden.
    ;~ Das Kommentar falls ich es vergesse oder falls es mal jemand anderes macht und nicht weiss was das soll:-)

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

    $G_CPP = ("\\XYZ\dfs\Abteilung")
    $H_CPP = ("\\XYZ\dfs\Home$\" & @UserName)

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

    Func _MapDrives()

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

    _AD_Open()
    $aUser = _AD_GetUserGroups(@UserName)
    _AD_Close()

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

    If WinActive ("Connect") Then
    ControlSetText("Connect","",5,@CRLF & @CRLF & "Ihre Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Bitte gedulden Sie sich einen Moment.")
    ElseIf WinActive ("VPN Verbindungsstatus") Then
    ControlSetText("VPN Verbindungsstatus","",7, "Ihre Netzlaufwerke werden verbunden," & @CRLF & "Bitte gedulden Sie sich einen Moment.")
    Sleep(1000)

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

    EndIf

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

    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ ------------------------------------------------------------------------------------------------Laufwerk G: XYZ----------------------------------------------------------------------------------------------
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    _ArraySearch($aUser, "CN=Mitarbeiter_XYZ" , 0, 0, 0, 1)
    $Laufwerk = "G:"

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

    If Not @error Then

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

    If WinActive ("Connect") Then
    ControlSetText("Connect","",5,@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk "&$Laufwerk&" wird verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk " &$Laufwerk&" wird verbunden.")
    ElseIf WinActive ("VPN Verbindungsstatus") Then
    ControlSetText("VPN Verbindungsstatus","",7, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk "&$Laufwerk&" wird verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk " &$Laufwerk&" wird verbunden.")
    EndIf

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

    DriveMapDel($Laufwerk)
    _WriteLogData("Laufwerk "&$Laufwerk&" getrennt.")

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

    $count =0

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

    Do

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

    DriveMapAdd($Laufwerk, $G_XYZ)

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

    Sleep(1000)

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

    If @error Then
    $count +=1
    _WriteLogData("Laufwerk "&$Laufwerk&" nicht verbunden. Fehlversuch:" & $count)
    Else
    ExitLoop
    EndIf

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

    Until $count >= 3

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

    If $count >=3 Then

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

    $Error = @error
    _ErrorLog($Error, $Laufwerk)
    MsgBox(48,"Netzlaufwerkverbindung fehlgeschlagen", "Laufwerk: " & $Laufwerk & " konnte nicht verbunden werden." & @CR & _
    "Bitte wenden Sie sich an den IT Support.")

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

    Else

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

    $Error = ""
    $Laufwerk = ""

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

    EndIf

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

    If WinActive ("Connect") Then
    ControlSetText("Connect","",5,@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk "&$Laufwerk&" erfolgreich verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk "&$Laufwerk&" verbunden.")
    ElseIf WinActive ("VPN Verbindungsstatus") Then
    ControlSetText("VPN Verbindungsstatus","",7, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk "&$Laufwerk&" verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk "&$Laufwerk&" aus Childform verbunden.")
    EndIf

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

    EndIf

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

    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ ------------------------------------------------------------------------------------------------Laufwerk H: XYZ----------------------------------------------------------------------------------------------
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    _ArraySearch($aUser, "CN=Mitarbeiter_XYZ" , 0, 0, 0, 1)
    $Laufwerk = "H:"

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

    If Not @error Then

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

    If WinActive ("Connect") Then
    ControlSetText("Connect","",5,@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk "&$Laufwerk&" wird verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk " &$Laufwerk&" wird verbunden.")
    ElseIf WinActive ("VPN Verbindungsstatus") Then
    ControlSetText("VPN Verbindungsstatus","",7, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk "&$Laufwerk&" wird verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk " &$Laufwerk&" wird verbunden.")
    EndIf

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

    DriveMapDel($Laufwerk)
    _WriteLogData("Laufwerk "&$Laufwerk&" getrennt.")

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

    $count =0

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

    Do

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

    DriveMapAdd($Laufwerk, $H_XYZ)

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

    Sleep(1000)

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

    If @error Then
    $count +=1
    _WriteLogData("Laufwerk "&$Laufwerk&" nicht verbunden. Fehlversuch:" & $count)
    Else
    ExitLoop
    EndIf

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

    Until $count >= 3

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

    If $count >=3 Then

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

    $Error = @error
    _ErrorLog($Error, $Laufwerk)
    MsgBox(48,"Netzlaufwerkverbindung fehlgeschlagen", "Laufwerk: " & $Laufwerk & " konnte nicht verbunden werden." & @CR & _
    "Bitte wenden Sie sich an den IT Support.")

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

    Else

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

    $Error = ""
    $Laufwerk = ""

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

    EndIf

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

    If WinActive ("Connect") Then
    ControlSetText("Connect","",5,@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk "&$Laufwerk&" erfolgreich verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk "&$Laufwerk&" verbunden.")
    ElseIf WinActive ("VPN Verbindungsstatus") Then
    ControlSetText("VPN Verbindungsstatus","",7, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk "&$Laufwerk&" verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk "&$Laufwerk&" aus Childform verbunden.")
    EndIf

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

    EndIf

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

    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    EndFunc

    [/autoit]

    Das wiederholt sich je nach AD gruppenzugehörigkeit noch für andere Laufwerke. Das hier ist nur ein Ausschnitt aber der Code ist immer der selbe.
    Jetzt habe ich zwei Probleme.
    Erstens bleibt das Script manchmal nach verbindung von Laufwerk G hängen und überspringt Laufwerk H: Im Log steht aber dass es verbunden wurde. Also funktioniert auch die Do Schleife nicht.
    Nur sehe ich nicht warum. Sieht es einer von euch?

    Also das Script bleibt bei der Verbindung von Laufwerk H: hängen.
    Wenn ich in dem Moment ein netuse in der DOS BOX abfeuere wird H: sofort verbunden.

    Sieht einer einen ehler warunm das Script an dieser Stelle manchmal nicht reagiert?

  • Fehler im Script oder ein anderes Problem?

    • Camulus
    • 11. Juli 2012 um 15:13

    Hi, ich bin immer noch ein meinem VPN Tool. Das Netzlaufwerke verbinden läuft alles über ein Script das die AD Gruppe abfragt und dementsprechen die Laufwerke verbindet.
    Das alle ssieht so aus:

    Spoiler anzeigen
    [autoit]


    Func _MapDrives()

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

    _AD_Open()
    $aUser = _AD_GetUserGroups(@UserName)
    _AD_Close()

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

    If WinActive ("Connect") Then
    ControlSetText("Connect","",5,@CRLF & @CRLF & "Ihre Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Bitte gedulden Sie sich einen Moment.")
    EndIf

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

    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;Laufwerke G:\ und H:\ für User mappen
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    _ArraySearch($aUser, "CN=Mitarbeiter" , 0, 0, 0, 1)
    If Not @error Then

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

    DriveMapDel("G:")
    _WriteLogData("Laufwerk G:\ getrennt.")
    DriveMapDel("H:")
    _WriteLogData("Laufwerk H:\ getrennt.")

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

    $count =0
    $Laufwerk = "G:\"
    Do
    DriveMapAdd("G:", $G_CPP)

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

    If WinActive ("Connect") Then
    ControlSetText("Connect","",5,@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk "&$Laufwerk&" wird verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk " &$Laufwerk&" wird verbunden.")
    ElseIf WinActive ("VPN Verbindungsstatus") Then
    ControlSetText("VPN Verbindungsstatus","",7, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk "&$Laufwerk&" wird verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk " &$Laufwerk&" wird verbunden.")
    EndIf

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


    $Error = @error

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

    If @error Then
    $count +=1
    _WriteLogData("Laufwerk G:\ nicht verbunden. Fehlversuch:" & $count)
    Else
    ExitLoop
    EndIf

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

    Until $count >= 3

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

    If $count >=3 Then

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

    _ErrorLog($Error, $Laufwerk)
    MsgBox(48,"Netzlaufwerkverbindung fehlgeschlagen", "Laufwerk: " & $Laufwerk & " konnte nicht verbunden werden." & @CR & _
    "Bitte wenden Sie sich an den IT Support.")

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

    Else

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

    $Error = ""
    $Laufwerk = ""

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

    If WinActive ("Connect") Then
    ControlSetText("Connect","",5,@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk G:\ erfolgreich verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk G:\ verbunden.")
    ElseIf WinActive ("VPN Verbindungsstatus") Then
    ControlSetText("VPN Verbindungsstatus","",7, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk G:\ verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk G:\ aus Childform verbunden.")
    EndIf

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

    EndIf

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

    $count =0
    Do
    DriveMapAdd("H:", $H_CPP)
    $Laufwerk = "H:\"
    If WinActive ("Connect") Then
    ControlSetText("Connect","",5,@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk "&$Laufwerk&" wird verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk " &$Laufwerk&" wird verbunden.")
    ElseIf WinActive ("VPN Verbindungsstatus") Then
    ControlSetText("VPN Verbindungsstatus","",7, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk "&$Laufwerk&" wird verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk " &$Laufwerk&" wird verbunden.")
    EndIf

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

    $Error = @error

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

    If @error Then
    $count +=1
    _WriteLogData("Laufwerk H:\ nicht verbunden. Fehlversuch:" & $count)
    Else
    ExitLoop
    EndIf

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

    Until $count >= 3

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

    If $count >=3 Then

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

    _ErrorLog($Error, $Laufwerk)
    MsgBox(48,"Netzlaufwerkverbindung fehlgeschlagen", "Laufwerk: "& $Laufwerk & " konnte nicht verbunden werden." & @CR & _
    "Bitte wenden Sie sich an den IT Support.")

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

    Else

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

    $Error = ""
    $Laufwerk = ""

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

    If WinActive ("Connect") Then
    ControlSetText("Connect","",5,@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk H:\ erfolgreich verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk H:\ verbunden.")
    ElseIf WinActive ("VPN Verbindungsstatus") Then
    ControlSetText("VPN Verbindungsstatus","",7, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk H:\ verbunden.")
    Sleep(250)
    _WriteLogData("Laufwerk H:\ aus Childform verbunden.")
    EndIf
    EndIf

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

    EndIf

    [/autoit]

    Das ganze wiederholt sich noch ein paar mal je nach Gruppenzugehörigkeit.

    So jetzt stelle ich beim testen fest dass die exe manchmal scheinbar hängt nach der Meldung Laufwerk XY erfolgreich verbunden.
    Der Efffekt ist dann dass das Laufwerk schlicht und einfach nicht verbunden wurde. Im Log steht aber das es verbunden wurde.

    Also hab ich wahrscheinlich einen Fehler eingebaut den ich aber nicht finde. Sieht ihn einer von euch? Oder hat jemand eine andere Erklärung? Wir haben immer wieder mal das Phänomen dass einzelne Laufwerke nicht verbunden werden. Ob nun per Autoit, Batch, oder vbs Script.

    Unsere Theorie ist dass die Netzwerkverbindung (u.U. UMTS) einfach zu langsam ist und das alles in einen Timeout läuft.
    Gibt es noch andere Möglichkeiten die hier nur keiner kennt oder die keinem einfallen?

    Das wollte ich mit meinem Script eigentlich abfangen, aber besonders erfolgreich war es nicht :huh:

    Hier mal ohne die Ausgaben in der GUI ist etwas übersichtlicher:

    Spoiler anzeigen
    [autoit]


    Func _MapDrives()

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

    _AD_Open()
    $aUser = _AD_GetUserGroups(@UserName)
    _AD_Close()

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

    If WinActive ("Connect") Then
    ControlSetText("Connect","",5,@CRLF & @CRLF & "Ihre Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Bitte gedulden Sie sich einen Moment.")
    EndIf

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

    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;Laufwerke G:\ und H:\ für User mappen
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    _ArraySearch($aUser, "CN=Mitarbeiter" , 0, 0, 0, 1)
    If Not @error Then

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

    DriveMapDel("G:")
    _WriteLogData("Laufwerk G:\ getrennt.")
    DriveMapDel("H:")
    _WriteLogData("Laufwerk H:\ getrennt.")

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

    $count =0
    $Laufwerk = "G:\"
    Do
    DriveMapAdd("G:", $G_CPP)

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


    $Error = @error

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

    If @error Then
    $count +=1
    _WriteLogData("Laufwerk G:\ nicht verbunden. Fehlversuch:" & $count)
    Else
    ExitLoop
    EndIf

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

    Until $count >= 3

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

    If $count >=3 Then

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

    _ErrorLog($Error, $Laufwerk)
    MsgBox(48,"Netzlaufwerkverbindung fehlgeschlagen", "Laufwerk: " & $Laufwerk & " konnte nicht verbunden werden." & @CR & _
    "Bitte wenden Sie sich an den IT Support.")

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

    Else

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

    $Error = ""
    $Laufwerk = ""

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


    EndIf

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

    $count =0
    Do
    DriveMapAdd("H:", $H_CPP)
    $Laufwerk = "H:\"

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

    $Error = @error

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

    If @error Then
    $count +=1
    _WriteLogData("Laufwerk H:\ nicht verbunden. Fehlversuch:" & $count)
    Else
    ExitLoop
    EndIf

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

    Until $count >= 3

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

    If $count >=3 Then

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

    _ErrorLog($Error, $Laufwerk)
    MsgBox(48,"Netzlaufwerkverbindung fehlgeschlagen", "Laufwerk: "& $Laufwerk & " konnte nicht verbunden werden." & @CR & _
    "Bitte wenden Sie sich an den IT Support.")

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

    Else

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

    $Error = ""
    $Laufwerk = ""

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

    EndIf

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

    EndIf

    [/autoit]


    EDIT: Also ich bin das gerade am testen. Ich hab nach jedem DriveMapadd noch ein Sleep(1000) eingebaut. Ab und an bekomme ich von dem Programm keine Rückmeldung. Dann wird in dem Besipiel7 jetzt laufwerk H übersprungen. Im Log steht dann Laufwerk H getrennt un d es geht mit dem nächsten weiter.

    Kann ich das "Keine Rückmeldung" irgendwie abfangen?

  • Tayicon immer sichtbar

    • Camulus
    • 10. Juli 2012 um 11:18

    Hi,

    kann man das Trayicon irgendwie so "erstellen" dass es bei Windows 7 automatisch in der Taskleiste angezegt wird und nicht erst "aktiviert" werden muss?

  • FileGetVersion (*.au3 File)

    • Camulus
    • 10. Juli 2012 um 11:17

    eben das war ja mein Problem, dass es keine ersion bei ner Textdatei gibt.
    Stringe auslesen werd ich mal testen. Momentan frag eich das Änderungsdstum ab. Wenn das neuer ist als dass der "laufenden Version" wird das Ding upgedatet.

    Wenn jamand weiss was gegen das Änderungsdatum spricht immer raus damit.

  • FileGetVersion (*.au3 File)

    • Camulus
    • 9. Juli 2012 um 16:57
    Zitat von ohforf

    Da gibts nur eins: schreib die Version als Kommentar rein, am besten als erste Zeile.

    [autoit]


    ;Version=01.08.15e

    [/autoit]


    Ich glaube allerdings nicht, dass ein Script sich selbst lesen, überschreiben und dann neu starten kann...
    Der übliche Trick wäre ein zweites Script, das nur zum starten/updaten dient.


    Das funktioniert nicht:-(
    ZUmindest bekomme ich mit FileGetVersion nix angezeigt.

  • TrayCreateItem Häkchen

    • Camulus
    • 9. Juli 2012 um 12:58

    Tut es. Danke!

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™