Hi,
ich habe ein kleines "TrayMenü" erstellt.
Allerdings alles mit TrayCreateItem.
Wenn ich die Items anklicke tun sie auch genau das was sie sollen aber dann haben sie ein Häkchen.
Bekomm ich das Häkchen irgendwie wieder weg?
Hi,
ich habe ein kleines "TrayMenü" erstellt.
Allerdings alles mit TrayCreateItem.
Wenn ich die Items anklicke tun sie auch genau das was sie sollen aber dann haben sie ein Häkchen.
Bekomm ich das Häkchen irgendwie wieder weg?
Danke,
es ist auch ei zweites das upgedatet werden soll. ![]()
Hi,
kann ich einem au3 File irgendwie eine Versionsnummer verpassen?
Ich hab einen ähnlichen Updater wie heir beschrieben: https://autoit.de/index.php?page=Thread&threadID=32163
Aber Versionsnummer hab ich nur in einer exe und ich würde gerne ein au3 File Updaten können.
Ahhh dann hab ich das falsch verstanden.
Inetressant wäre es höchstens den Aussendienstlern eine Meldung auszugeben wie: "VPN Verbindung kann nicht aufgebaut werden weil Passwort abgelaufen."
Alles anzeigenVista müsste auch schon gehen.
Wenn ein User sich nicht anmelden kann, dann kann _AD_Open folgende Info zurückgeben:; 525 - user not found
; 52e - invalid credentials
; 530 - not permitted to logon at this time
; 532 - password expired
; 533 - account disabled
; 701 - account expired
; 773 - user must reset passwordWenn Du das brauchen kannst, dann könnte man das und Dein bisheriges Skript in eine kleine FUnktion einpacken.
Hi (Water),
wie würde dass denn funktionieren? Muss ich dann nur
[autoit]Func _AD_GetLastADSIError()
[/autoit]aufrufen und mir was zurückgeben lassen?
Eigentlich kann es doch garnicht funktionieren oder? Die VPN Einwahl scheitert doch wenn der User gesperrt ist o.ä. und ohne VPN EInwahl gibt es keine AD Abfrage.
Hi,
ich hab hier ein kleines Problem.
Eine Tochter des Unternehmens hier hat eine Menge Aussendienstmitarbeiter. Die wählen sich per VPN ein. Allerdings gibt es hier ein historisch gewachsenes Problem dass dazu führt dass diese User sich nicht mit Ihrem Domänenaccount einwählen können sondern sich mit einem User einer anderen Domäe anmelden müssen. Die Domänen vetrauen sich natürlich untereinander.
Das Problem ist jetzt das diese User das EInwahlpasswort mal bekommen haben und abgespeichert. Also dieses Häkchen gesetzt User und Passwort merken.
Weiss jemand wo Windows sich das merkt und ob man das irgendwie über Autout nutzen kann?
Es gibt von dem Einwahltool zwei Versionen, das eine ruft einfach Rasdial VPN-Verbindung auf und nimmt den angemeldetetn User zur VPN Einwahl was auch prima funktioniert.
Das zweite ruft rasphone auf mit den selben Einstellungen, dass geht natürlich nicht weil der angemelete User ja nicht der VPN EInwahl User ist. Das läuft dann einmal vor die Wand und in dem "nochmal versuchen Fenster" ist ja dann der richtige User gespeichert.
Das will ich natürlich gerne vereinheilichen, und z.b. sagen wenn der USer aus der und der Domäne kommt nimm den angemeldeten User ansonsten lies die Daten da aus und nimm die.
Danke!
Funktioniert perfekt! ![]()
Hallo,
ich steh mal wieder völlig aufm Schlauch, oder seh den Wald vor lauter Bäumen nicht.
Ich habe ein Script das nach AD Gruppenzugehörigkeit Laufwerke mappt. Falls das jetzt aus irgendeinem Grund nicht funktioniert soll es insgesamt dreimal versucht werden.
Wenns dann immer noch nicht geklappt hat soll halt ne entsprechende Meldung ausgegeben werden.
So soeht das bei mir aus:
Schnipsel:
[autoit]
If Not @error Then
DriveMapDel("G:")
_WriteLogData("Laufwerk G:\ getrennt.")
DriveMapDel("H:")
_WriteLogData("Laufwerk H:\ getrennt.")
DriveMapAdd("G:", \\domäne.local\dfs\Abteilung)
;~ DriveMapAdd("G:", "\\domäne.local\dfs\Abteilung",0,@LogonDomain & "\"& @UserName)
If @error Then
$Error = @error
$Laufwerk = "G:\"
_ErrorLog($Error, $Laufwerk)
Else
$Error = ""
$Laufwerk = ""
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- Status") Then
ControlSetText("VPN- Status","",11, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk G:\ erfolgreich verbunden.")
Sleep(250)
_WriteLogData("Laufwerk G:\ aus Childform verbunden.")
EndIf
EndIf
[/autoit]Ich habs mit einer For Next Schleife versucht aber das klappt nicht wie ich will. Warscheinlich ist es wieder ganz einfach und ich stell mich nur zu blöd. ![]()
Hi,
ich brauch mal eine Erklärung für so Begriffsstutzige wie mich.
Ich habe zwei exe Dateien die ein Logfile befüllen sollen. Erstellt und befüllt wird das Logfile so:
#Include <File.au3>
[/autoit][autoit][/autoit][autoit][/autoit][autoit];Muss wieder raus
$FileName = @ScriptDir & "\Log\Logon_" & @YEAR & @MON & @MDAY & "_" & @HOUR & @MIN & @SEC & ".log"
;....
Func _WriteLogData($Line)
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]Local $FileCreateOK, $LinePrefix
[/autoit][autoit][/autoit][autoit][/autoit][autoit]$LinePrefix = @YEAR & "." & @MON & "." & @MDAY & "/" & @HOUR & ":"& @MIN & ":" & @SEC & " | " & $Line
[/autoit][autoit][/autoit][autoit]if not FileExists($FileName) Then
[/autoit][autoit][/autoit][autoit]$FileCreateOK = _FileCreate($FileName)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]EndIf
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]$LogFileID = FileOpen($FileName,1)
[/autoit][autoit][/autoit][autoit]FileWriteLine($LogFileID,$LinePrefix)
[/autoit][autoit][/autoit][autoit]FileClose($LogFileID)
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]EndFunc
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]Wenn ich jetzt die zweite exe ins LogFile schreiben lassen will muss die ja wissen dass es schon ein Logfile gibt.
Mien Idee war jetzt eine eigene Funktion für die zweite exe die dann das Logfile der ersten befüllt.
So in der Art
[autoit]#Include <File.au3>
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]Func _WriteMappingLogData($Line)
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]$LogFileID = FileOpen($FileName,1)
[/autoit][autoit][/autoit][autoit]FileWriteLine($LogFileID,$LinePrefix)
[/autoit][autoit][/autoit][autoit]FileClose($LogFileID)
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]EndFunc
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
Aber wie gebe ich der zwieten Funktion den schon vorhandenen LogFile- Namen der ersten mit?
Oder wo steht beschrieben wie ich variablen einem Funktionsaufruf mitgebe?
Ist verständlich was ich will?
![]()
:pinch: da hätte ich auch drauf kommen können ![]()
Danke! ![]()
Hi,
ich hab wieder mal so eine Spezial Frage. Ich habe eine GUI mit der unsere User Ihre VPN verbindung herstellen, Laufwerke verbinden usw.
Das laufwerke verbinden hab ich in eine seperate exe ausgelagert. Wegen Updatefähigkeit.
Kann ich die GUI aus der Ursprungsexe irgendwie über die zweite steuern? Also in meinem Fall Statusmeldungen in ein Labelfeld schreiben?
Hi,
ich stell mich mal wieder zu blöd.
Ich möchte immer noch Laufwerke verbinden.
Wenn das nicht klappt will ich einen entsprechenden Eintrag ins Log FIle schreiben.
DriveMapAdd setzt ja den entsprechenden Wert in @error, aber wie ich den Wert dann an die funktion übergebe die das Log schriebt ist mir nicht klar.
Ich weiss wohl dass es mit Return geht, aber wie ist mir nicht klar.
Hier ein Schnipsel:
[autoit]
_ArraySearch($aUser, "CN=G-AbteilungXY" , 0, 0, 0, 1)
If Not @error Then
DriveMapDel("W:")
DriveMapAdd("W:", "\\filsever\dfs\Benutzer\XY\")
If @error Then
MsgBox(0,"Fehler beim Mapping", "Fehler :" & @error); Messagebox ist nur zum testen, anstatt der Messagebox würde ich gerne _ErrorLog aufrufen mit dem entsprechenden Wert aus @error.
EndIf
EndIf
Func _ErrorLog()
[/autoit][autoit][/autoit][autoit][/autoit][autoit]If @error = 1 Then
_WriteLogData("Netzlaufwerke NICHT verbunden - Undefinierter / anderer Fehler. @extended enthält den Rückgabewert der Windows API.")
ElseIf @error = 2 Then
_WriteLogData("Netzlaufwerke NICHT verbunden - Der Zugriff auf die Remote-Freigabe wurde verweigert")
ElseIf @error = 3 Then
_WriteLogData("Netzlaufwerke NICHT verbunden - Das Gerät ist bereits zugewiesen")
ElseIf @error = 4 Then
_WriteLogData("Netzlaufwerke NICHT verbunden - Ungültiger Gerätename")
ElseIf @error = 5 Then
_WriteLogData("Netzlaufwerke NICHT verbunden - Ungültige Remote-Freigabe")
ElseIf @error = 6 Then
_WriteLogData("Netzlaufwerke NICHT verbunden - Ungültiges Passwort")
EndIf
EndFunc
[/autoit]o.k...
zumindest weiss ich jetzt dass der String falsch ist.
Danke!
[ gelöst ] 7za.exe ansprechen
Was soll mir das sagen?
Das entpacken als solches funktioniert ja. Nur wenn alles kompiliert ist und ich die exe ausführe gehts nicht.
ne das muss so, hab ich mich auch drüber gewundert aber steht so in der Hilfe. Funktioniert ja auch wenn man es direkt aus dem Sript ausführt Nur nach dem Kompilieren nicht mehr.
Hi,
ich versuche gerade dieses einfache Script zu kompilieren:
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=CRM_Installer.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.2.0
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit][autoit][/autoit][autoit]; Script Start - Add your code below here
[/autoit][autoit][/autoit][autoit]FileInstall("7za.exe", @ScriptDir & "\7za.exe", 1)
FileInstall("CRM2011_x86.zip", @ScriptDir & "\CRM2011_x86.zip", 1)
DirCreate(@ScriptDir & "\CRM2011_x86")
Sleep(1000)
RunWait(@ScriptDir & "\7za x " & @ScriptDir & "\CRM2011_x86.zip" & " " &"-aoa -o"& @ScriptDir & "\CRM2011_x86");, @SW_HIDE)
[/autoit][autoit][/autoit][autoit];~ ShellExecuteWait(@ScriptDir & "\CRM2011_x86\_setup.cmd","",@ScriptDir,"open",@SW_HIDE)
MsgBox(0,"","nehmen wir an das CRM wäre installiert")
;~ FileDelete(@ScriptDir & "\7za.exe")
;~ FileDelete(@ScriptDir & "\CRM2011_x86.zip")
;~ DirRemove(@ScriptDir & "\CRM2011_x86",1)
Alles ja nicht sooo kompliziert.
Wenn ich das alles mit F5 teste gehts.
Wenn ich das Script kompiliere und in einem anderen Ordner die exe ausführe gehts nicht. Dieser Teil:
RunWait(@ScriptDir & "\7za x " & @ScriptDir &
"\CRM2011_x86.zip" & " " &"-aoa -o"& @ScriptDir &
"\CRM2011_x86");, @SW_HIDE)
wird scheinbar überspringen. Das DOS Fenster im Hintergrund blitzt zwar kurz auf, aber entpackt wird nix.
Der Rest funktioniert.
Den selben Code habe ich in einem anderen Tool, also hier nur den Dateinamen geändert und da gehts auch.
Irgendjemand ne Idee?
Danke.
Kann man immer brauchen ![]()
Das war Plan B
Ich dachte ich hätte vielleicht noch ne andere Möglichkeit einfach übersehen oder nicht gewusst.
Aber dann wirds gezipt.
Danke!
Hi,
gibts irgendeine Möglichkeit ein ganzes Verzeichnis in eine exe einzubinden?