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. AutoITier

Beiträge von AutoITier

  • Skript zum Verschieben von Dateien und Ordnern via admin. Freigabe

    • AutoITier
    • 27. Februar 2012 um 08:22

    Hallo zusammen,

    exakt wegen dieser For-Schleife wende ich mich noch einmal an Euch :)

    Mein Skript sieht derzeit so aus:

    [autoit]

    #include <file.au3>
    $IniPfad = "C:\XXX\Verteilung\XXX.ini"
    Local $PC2
    Local $PC2
    Local $PC3
    Local $PC4
    Local $PC5
    Local $PC6
    Local $PC7
    Local $PC8
    Local $PC9
    Local $PC10
    Local $PC11
    Local $PC12
    Local $PC13
    Local $PC14
    Local $PC15
    Local $PC16
    Local $PC17
    Local $PC18
    Local $PC19
    Local $PC20
    $END_PC1 = 1
    $END_PC2 = 1
    $END_PC3 = 1
    $END_PC4 = 1
    $END_PC5 = 1
    $END_PC6 = 1
    $END_PC7 = 1
    $END_PC8 = 1
    $END_PC9 = 1
    $END_PC10 = 1
    $END_PC11 = 1
    $END_PC12 = 1
    $END_PC13 = 1
    $END_PC14 = 1
    $END_PC15 = 1
    $END_PC16 = 1
    $END_PC17 = 1
    $END_PC18 = 1
    $END_PC19 = 1
    $END_PC20 = 1
    While 1
    $PC2 = IniRead($IniPfad,"MAIN","PC1","X")
    If $PC2 = "X" then
    $END_PC1 = 0
    Else
    If Ping($PC2) And $END_PC1 <> 0 Then
    $COPY_PC1 = DirCopy("C:\XXX\UVNC\", "\\" & $PC2 & "\c$\XXX\UVNC",1)
    _FileWriteLog("C:\XXX\Verteilung\log.txt", $PC2 & " - Kopieren erfolgreich")
    If $COPY_PC1 = 1 Then $END_PC1 = 0
    EndIf
    EndIf

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

    $PC2 = IniRead($IniPfad,"MAIN","PC2","X")
    If $PC2 = "X" then
    $END_PC2 = 0
    Else
    If Ping($PC2) And $END_PC2 <> 0 Then
    $COPY_PC2 = DirCopy("C:\XXX\UVNC\", "\\" & $PC2 & "\c$\XXX\UVNC",1)
    _FileWriteLog("C:\XXX\Verteilung\log.txt", $PC2 & " - Kopieren erfolgreich")
    If $COPY_PC2 = 1 Then $END_PC2 = 0
    EndIf
    EndIf

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

    $PC3 = IniRead($IniPfad,"MAIN","PC3","X")
    If $PC3 = "X" then
    $END_PC3 = 0
    Else
    If Ping($PC3) And $END_PC3 <> 0 Then
    $COPY_PC3 = DirCopy("C:\XXX\UVNC\", "\\" & $PC3 & "\c$\XXX\UVNC",1)
    _FileWriteLog("C:\XXX\Verteilung\log.txt", $PC3 & " - Kopieren erfolgreich")
    If $COPY_PC3 = 1 Then $END_PC3 = 0
    EndIf
    EndIf

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

    (...)

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

    Sleep(5000)
    If $END_PC1 And $END_PC2 And $END_PC3 And $END_PC4 And $END_PC5 And $END_PC6 And $END_PC7 And $END_PC8 And $END_PC9 And $END_PC10 And $END_PC11 And $END_PC12 And $END_PC13 And $END_PC14 And $END_PC15 And $END_PC16 And $END_PC17 And $END_PC18 And $END_PC19 And $END_PC20 = 0 Then ExitLoop
    WEnd
    msgbox(0,"","Alle Übertragungen abgeschlossen !")

    [/autoit]

    Wer kann mir helfen, hier eine Schleife einzubauen, so dass ich nicht für 20 PC's die Passage kopieren muss :D

    Danke.

  • Skript zum Verschieben von Dateien und Ordnern via admin. Freigabe

    • AutoITier
    • 26. Februar 2012 um 16:22

    Jipp, danke. Das mit dem $END_PC ist eben wichtig, sonst würde er ja ständig die Kopiervorgänge wiederholen.

    Und wenn er dann erkennt, dass in der INI-Datei z.B. PC3 leer ist - wie soll dann Deine Bedingung mit dem Online-PC klappen? ^^ Indem man neben $EINGETRAGEN_PC1 = 0 auch noch Online = 1 setzt?

  • Skript zum Verschieben von Dateien und Ordnern via admin. Freigabe

    • AutoITier
    • 26. Februar 2012 um 15:57

    Ach wie genial :) Mit so etwas bastle ich auch schon rum, mein Problem ist nur bisher gewesen, dass ich nicht wusste, wie ich damit umgehe, wenn alle Rechner online sind :) Deine INI-Datei sieht aus, wie meine ;)

    Drei Fragen noch:

    Wo würdet ihr jeweils den Kopiervorgang einleiten? Direkt unter der jeweiligen "If Ping"-Schleife?

    Dann: Was, wenn ich z.B. bei PC 3 keine IP-Adresse angegeben habe? Das Skript soll dann diese Zeile einfach überspringen.

    Und: GIbt es eine Lösung, um zu prüfen, ob der Kopiervorgang vollständig war? Mir geht es darum, dass die Verbindung während des Kopierens getrennt wird?

    Danke :)

  • Skript zum Verschieben von Dateien und Ordnern via admin. Freigabe

    • AutoITier
    • 26. Februar 2012 um 15:38

    Hi, das is mir klar ;) Mir geht es nur darum, dass das Skript alle Rechnernamen z.B. aus ner INI-Datei ausliest und dann nacheinander versucht, die zu erreichen (es gibt ja auch Notebooks, die z.B. nicht immer an sind). Das Skript soll erst enden, wenn alle Rechner erreicht wurden, sprich alle die Datei erhielten. Markierung wäre ja z.B. durch ne Variable, die 0 oder 1 annehmen kann, in der INI-Datei denkbar. Idee?

  • Skript zum Verschieben von Dateien und Ordnern via admin. Freigabe

    • AutoITier
    • 26. Februar 2012 um 15:17

    Danke, danke ;) Ich wollte aber ganz bewusst auf etwas auf der Seite des Clients verzichten.

    Wie würdet ihr hier vorgehen, dass er prüft, ob ein Rechner online ist - wenn ja, Kopiervorgang und aus der Liste löschen - wenn nein, nächsten Rechner nehmen und mit dem weiter machen?

  • Skript zum Verschieben von Dateien und Ordnern via admin. Freigabe

    • AutoITier
    • 26. Februar 2012 um 09:58

    Hallo zusammen,

    AutoIT ist eine richtige Sucht ;) Nun bitte ich Euch einmal um Rat über den Aufbau meines nachfolgenden Vorhabens - ohne, dass ich für jeden PC eine eigene EXE erstelle ;)

    In meinem Netzwerk gibt es ca. 15 Rechner, welche innerhalb der Domäne sind. Via C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Autostart kann ich beispielsweise eine AutoIT-Exe legen, welche eine Installation vornimmt und sich anschließend selbst löscht. Diesen Schritt muss ich aber manuell vornehmen und dabei stets warten, bis die jeweiligen Rechner online sind.

    Ich stelle mir ein Skript mit einer Schleife vor, welches zunächst - beispielsweise aus einer Text-Datei - alle Rechnernamen ausliest und dann nacheinander versucht, diese Rechner zu erreichen. Wird ein Rechner nicht erreicht, geht es weiter zum nächsten. Wird einer erreicht, wird der Inhalt aus C:\bla bla\* rüberkopiert in z.B. das o.g. Verzeichnis. Wenn keine Rechner mehr "fällig" sind, wird das Skript beendet.

    Wie würdet ihr es angehen? Danke ;)

  • Anfänger bittet um Optimierungsvorschläge

    • AutoITier
    • 20. Februar 2012 um 00:35

    Hallo zusammen,

    habt vielen Dank für Eure tolle Unterstützung. Ich bin da sehr dankbar und weiß, dass es nicht selbstverständlich ist.

    Okay, ich nehme den Close-Aufruf wieder raus aus der Schleife, dadurch steigt aber die Arbeitsspeicherauslastung komischer Weise wieder.

    Ich hoffe, dass ich mir durch die Implementierung der EmptyWorkingSet-Geschichte nicht ein Eigentor schieße (Arbeitsspeicher) - die Zahlen sind aber doch phänomenal

    AspirinJunkie: Kannst Du mir das mal konkret zeigen, was Du mit der While-Schleife meinst? Denn es ist ja so, dass diese letzte Schleife darauf "warten" soll, ob a) das Programm geschlossen wird, b) das Kennwort geändert wird (bzw. der Versuch unternommen wird, dies zu tun) oder c) der Ummelden-Dialog gestartet wird.

  • Anfänger bittet um Optimierungsvorschläge

    • AutoITier
    • 19. Februar 2012 um 12:19

    Hallo zusammen,

    ich habe ein SingleSignOn-Skript geschrieben, welches Benutzernamen und Kennwort einer Anwendung automatisch beim Start des Programmes durch den User eingibt.

    Da das Ganze auf einem Terminalserver ausgeführt wird, bin ich um jedes Quäntchen Speicher froh, welches eingespart werden kann. Daher auch mein DLL-Aufruf in der While-Schleife (Auslagerungsdatei ?!).

    Welche Tipps, gerade für die letzte While-Schleife, welche ja letztendlich bis zum Programmende durchläuft, würdet ihr mir geben? Lieber mit Switch und Case arbeiten? Den DLL-Schließen-Befehl besser außerhalb der Schleife anbringen?


    Vielen Dank !

    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=P:\PWMITDLLcloseinschleife.exe
    #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------
    AutoIt Version: 1.0
    Author:

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

    PW-Single-Sign-On
    #ce ----------------------------------------------------------------------------
    #include <file.au3>
    #include <misc.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <INet.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    Global Const $h_PsAPI = DllOpen("psapi.dll")
    $usr = @username
    ; Prüft vor dem Starten, ob es sich um den Terminalserver handelt.
    If not (@computername = "XXXX" or "XXXX" and @LogonDNSDomain = "XXXX") Then
    MsgBox(64,"XXXX - PW AutoLogin","PW kann auf diesem Endgerät nicht gestartet werden.")
    _AlarmView("Es wurde versucht, PW auf einem nicht zugelassenen Endgerät zu starten: "&@Computername&" "&@LogonDNSDomain)
    Exit
    EndIf
    ; Prüft vor dem Starten, ob bereits eine PW.exe im Taskmanager gestartet ist.
    If _Singleton("PWSSO",1) = 0 Then
    MsgBox(64,"XXXX - PW AutoLogin","PW wird bereits ausgeführt und kann nicht erneut gestartet werden.")
    _FileWriteLog(@ScriptDir & "\"&$usr&".log", @Username & " hat versucht, PW doppelt zu starten.")
    Exit
    Else
    EndIf
    ; Start von PW.exe
    $PID = run ("\\srv\PW\client\PW.exe")

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

    ; Prüft, ob die PW.Exe startet
    If not ProcessWait("PW.exe",10) = true Then
    _FileWriteLog(@ScriptDir & "\"&$usr&".log", @Username & " erhielt eine Fehlermeldung, da die PW.exe nicht gestartet werden konnte.")
    _AlarmView("PW.exe kann nicht gestartet werden")
    MsgBox(48,"XXXX - PW AutoLogin","Fehler !")
    Exit
    Else
    EndIf
    ; Prüft bis zum Erscheinen des PW-Anmeldefensters in Form einer Schleife, ob ein Fehlerdialog (Dienst nicht gestartet o.ä.) erscheint.
    While 1
    If Not WinActive("[CLASS:TFrmPopErrorDlg]", "") = 0 Then
    Send("{Enter}")
    _FileWriteLog(@ScriptDir & "\"&$usr&".log", @Username & " erhielt vor PW-Anmeldung einen Fehler (TFrmPopErrorDlg)")
    _AlarmView("TFrmPopErrorDlg vor Programmstart aufgetreten")
    MsgBox(0, "Fehler aufgetreten", "Fehler aufgetreten")
    Send("{Enter}")
    Exit
    EndIf
    If Not WinActive("[CLASS:TMessageForm]", "") = 0 Then
    Send("{ESC}")
    Send("{ESC}")
    _FileWriteLog(@ScriptDir & "\"&$usr&".log", @Username & " erhielt vor PW-Anmeldung einen Fehler (TMessageForm)")
    _AlarmView("TMessageForm vor Programmstart aufgetreten")
    MsgBox(0, "Fehler aufgetreten", "Fehler aufgetreten")
    Exit
    EndIf
    $var = WinExists("PW-Anmeldung")
    If $var = 1 then ExitLoop
    sleep(100)
    WEnd

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

    WinWait("PW-Anmeldung")

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

    ; Eingabe von Benutzernamen und Kennwort.
    BlockInput(1)
    ControlSend("PW-Anmeldung", "", "[CLASS:TEdit; INSTANCE:2]",@Username)
    ControlSend("PW-Anmeldung", "", "[CLASS:TEdit; INSTANCE:1]", "testtest")
    ControlSend("PW-Anmeldung", "", "", "{Enter}")
    BLOCKINPUT(0)
    ; Prüft, ob Benutzername oder Kennwort abgewiesen werden.
    WinWait("[CLASS:TMessageForm]", "",1)
    If WinExists("[CLASS:TMessageForm]", "") Then
    _FileWriteLog(@ScriptDir & "\"&$usr&".log", @Username & " erzeugte einen Anmeldefehler.")
    _AlarmView("Benutzername oder Kennwort abgewiesen")
    MsgBox(0, "jjjj", "PW falsch")
    ProcessClose($PID)
    Exit
    Else
    EndIf
    _FileWriteLog(@ScriptDir & "\"&$usr&".log", @Username & " angemeldet")
    ; Startet das Dispo-Auswahlfenster.
    ;WinWaitActive("[CLASS:TMainForm]", "")
    ;ControlSend("[CLASS:TMainForm]", "", "", "{F12}")
    ;sleep(100)
    ;ControlSend("[CLASS:TMainForm]", "", "", "{P}")
    ;sleep(100)
    ;ControlSend("[CLASS:TMainForm]", "", "", "{D}")
    ;sleep(100)
    ;ControlSend("[CLASS:TMainForm]", "", "", "{D}")

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

    ; Überwacht ab der erfolgreichen Anmeldung, ob die Abmeldung bzw. das Programmende eintritt oder versucht wird, das Kennwort zu ändern.
    While 1
    sleep(100)
    If Not ProcessExists($PID) Then
    _FileWriteLog(@ScriptDir & "\"&$usr&".log", @Username & " abgemeldet")
    MsgBox(0, "ende", "ende")
    Exit
    EndIf
    sleep(100)
    If WinActive("[CLASS:TFrmDBValidatePassword]", "") Then
    Send("{ESC}")
    Send("{ESC}")
    Send("{Enter}")
    _FileWriteLog(@ScriptDir & "\"&$usr&".log", @Username & " hat versucht, eine Passwortänderung durchzuführen.")
    MsgBox(0, "jjjj", "jjjj")
    EndIf
    sleep(100)
    If WinActive("[CLASS:TFrmLogin2]", "") Then
    _FileWriteLog(@ScriptDir & "\"&$usr&".log", @Username & " abgemeldet (und PW-Anmeldedialog geöffnet.")
    MsgBox(0, "F", "Fenster erkannt")
    Exit
    EndIf
    DllCall($h_PsAPI, 'int', 'EmptyWorkingSet', 'long', -1)
    DllClose($h_PsAPI)
    WEnd

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

    ; eMail-Funktion
    Func _AlarmView($text = "Kein Parameter")
    $s_SmtpServer = "192.168.9.2"
    $s_Username = ""
    $s_Password = ""
    $IPPort = 25
    $s_FromName = "PW"
    $s_FromAddress = "PW"
    $s_ToAddress = "AlarmView@192.168.9.2"
    $s_Subject = "PW-Fehlermeldung steht an"
    Dim $as_Body[2]
    $as_Body[0] = "Es wurde eine Fehlermeldung ausgegeben."
    $as_Body[1] = ""&@Username &" erzeugte den Fehler: "& $text
    $Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, @computername, -1)
    $err = @error
    If $Response = 1 Then
    Else
    EndIf
    Endfunc

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Optimierung meines Skriptes

    • AutoITier
    • 18. Februar 2012 um 13:26

    Danke. Auch auf dem Terminalserver rätst Du davon ab?

  • Optimierung meines Skriptes

    • AutoITier
    • 18. Februar 2012 um 11:45

    Vielen, vielen Dank. Ich muss da nicht kämpfen. Da es nur ein Programm ist, welches auf allen Notebooks bei uns laufen soll, möchte ich es natürlich so stark optimieren, wie nur möglich.

    Das ist ja ein Unterschied wie Tag und Nacht? Ist es schonender, so viele Dinge wie möglich im Vorfeld festzulegen (vgl. Konstanten)?

    Was mich aber interessieren würde: wie stehst Du / steht ihr zu der ReducyMemory-Funktion, welche ich hier im Forum aufgeschnappt habe?

    Ist sie eher kontraproduktiv?

    Ein ähnliches Programm (nur zu einem anderen Zweck) soll auf unserem Terminalserver eingesetzt werden. Dort will ich natürlich so wenig Wind wie möglich verursachen ;) Was könntest Du da empfehlen?

    P.S.: Sorry wegen der Kerne - ich hatte die Prozessoren im Kopf :D

  • Optimierung meines Skriptes

    • AutoITier
    • 17. Februar 2012 um 19:13

    Das sind Notebooks :D

  • Optimierung meines Skriptes

    • AutoITier
    • 16. Februar 2012 um 23:23

    Danke. Mein Skript läuft nun immer so zwischen 500 und 1000 K - springt aber dauernd hin und her. Die Prozessorlast geht kurz immer wieder auf ca. 25 Prozent. Normal?

  • Optimierung meines Skriptes

    • AutoITier
    • 16. Februar 2012 um 22:48

    Hallo zusammen,

    wer hilft mir Neuling :-), diesen Anfang meines Skriptes, welcher auf unseren Notebooks zur Kennwortsynchronisation dauerhaft ab Rechnerstart laufen soll, weiter zu verschlanken bzw. die Arbeitsspeicherlast zu reduzieren?

    [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
    _ReduceMemory()
    Next

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

    If $List = "Sperren Sie den Computer und heben Sie anschließend die Sperrung unter Verwendung Ihres aktuellen Kennworts oder Ihrer Smartcard auf. Klicken Sie auf das Symbol, um weitere Informationen zu erhalten." Then
    ExitLoop

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

    EndIf
    sleep(1000)
    _ReduceMemory()
    WEnd

    [/autoit]


    Funktion:

    [autoit]

    Func _ReduceMemory($i_PID = -1)
    Local $ai_Return
    If $i_PID <> -1 Then
    Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
    $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
    DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
    Else
    $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
    EndIf
    Return $ai_Return[0]
    EndFunc ;==>_ReduceMemory

    [/autoit]

    (aus autoit.de)

  • AD: pwdLastSet des aktuell angemeldeten Users anzeign

    • AutoITier
    • 16. Februar 2012 um 15:41

    danke, aber er zeigt mir bei Deinem Skript keinen Wert für Datum / Uhrzeit der Kennwortänderung an?

  • AD: pwdLastSet des aktuell angemeldeten Users anzeign

    • AutoITier
    • 16. Februar 2012 um 14:46

    Vielen Dank. Wenn ich es nun mal so lassen wollen würde - kann man hier noch etwas filtern, so dass das Laden der Daten schneller geht? Derzeit braucht es über VPN paar Sekunden, bis die Daten da sind. Kann es sein, er läd ALLES, obwohl nur vier Angaben gewünscht sind?

    [autoit]

    _AD_Open()
    $aProperties = _AD_GetObjectProperties(@UserName, "displayname,distinguishedName,pwdlastset")

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

    $ddd = $aProperties[3][1]
    _DateTimeFormat($ddd,2)
    $zuletzt = _DateTimeFormat($ddd,2)&" "&" "&_DateTimeFormat($ddd,4)
    $aProperties = _AD_GetObjectProperties(@ComputerName & "$")

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

    $PCName = $aProperties[4][1]
    $PCBeschreibung = $aProperties[7][1]
    msgbox(4144,"",$PCName&" "&$PCBeschreibung

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

    _AD_Close()

    [/autoit]
  • AD: pwdLastSet des aktuell angemeldeten Users anzeign

    • AutoITier
    • 14. Februar 2012 um 21:31

    Und meine Variante ist auch okay? Da bekomme ich auch gleich den Namen etc. ...

  • AD: pwdLastSet des aktuell angemeldeten Users anzeign

    • AutoITier
    • 14. Februar 2012 um 18:49

    Hallo zusammen,

    leider bekomme ich es, auch mit den AD-Funktionen, nicht hin, das Attribut "pwdLastSet" des Active Directory vom aktuell angemeldeten User auszulesen, also das Datum, wann das Kennwort zuletzt gesetzt wurde (nicht, wann es abläuft).

    Ich würde mich freuen, wenn mir jemand auf die Sprünge helfen könnte.

    Danke !

    Edit: so schlecht bin ich garnicht :) :

    [autoit]

    #include <ad.au3>
    #include <DATE.au3>
    _AD_Open()
    $aProperties = _AD_GetObjectProperties(@UserName, "displayname,distinguishedName,pwdlastset")
    $aPWInfo = _AD_GetPasswordInfo()
    _ArrayDisplay($aProperties, "Active Directory Functions - Example 2 - Properties for user '" & @UserName & "'")
    $ddd = $aProperties[3][1]
    _DateTimeFormat($ddd,2)
    msgbox(0,"",_DateTimeFormat($ddd,1)&" "&" "&_DateTimeFormat($ddd,4))
    _AD_Close()

    [/autoit]
  • Doppelten Programmstart in Terminalsitzung verhindern

    • AutoITier
    • 10. Februar 2012 um 00:20

    Spitze. Das war's. Vielen Dank. Und in anderen Foren wird darüber mehrere Wochen lange geschrieben ;)

  • Doppelten Programmstart in Terminalsitzung verhindern

    • AutoITier
    • 9. Februar 2012 um 18:53

    Hallo zusammen,


    ich möchte verhindern, dass meine EXE mehr als einmal gestartet wird.

    Bisher erledige ich das via

    [autoit]

    ProcessExists("meine.exe")

    [/autoit]

    In einer Terminalsitzung des Terminalservers klappt das aber nicht, sobald mindestens ein anderer User die "meine.exe" ebenfalls geöffnet hat - in einer anderen Sitzung.

    Welchen Weg würdet ihr gehen, um beim Start meiner EXE zu prüfen: hat der aktuelle User diese Datei bereits geöffnet? Via Titelleiste geht es nicht, da dieser ein längerer Splash-Screen zuvor kommt.

    Vielen Dank :) !

  • 2 dauernde Schleifen für SingleSignOn

    • AutoITier
    • 8. Februar 2012 um 19:28

    So habe ich es gelöst:

    [autoit]

    $var = WinExists("PW-Anmeldung")
    If $var = 1 then ExitLoop

    [/autoit]

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™