Reihenfolge des Autostart

FatManStanding

Lt. Junior Grade
Registriert
Aug. 2021
Beiträge
385
Hallo,

ich habe unter Windows 10 2 Programme als Verknüpfung im Autostart liegen, das eine benötigt das andere. Gibt es da eine bestimmte Reihenfolge (z. B. alphabetisch). Hab das ein paar mal getestet und die beiden starten in alphabetischer Reihenfolge, das kann aber auch Zufall sein. Ich komme aus der Linux-Ecke und habe von Batch keine Ahnung. Gibt es eine Möglichkeit Programm 2 erst zu starten wenn das Programmfenster von Programm 1 gestartet wurde?

Unter Linux würde ich mit wmctrl prüfen ob das Fenster bereits geöffnet ist.

Grüße
FMS
 
Beim Autostart hast Du keinen Einfluss, in welcher Reihenfolge die Tools gestartet werden.

Aber mit der Aufgabenplanung kannst Du das regeln.
 
  • Gefällt mir
Reaktionen: CoMo
Mit notepad eine neue Textdatei erstellen

start "" "C:\Programme\Programm_1.exe" <- Pfad vom ersten Programm eintragen
timeout 30 <- Wartezeit in Sekunden
start "" "C:\Programme\Programm_2.exe" <- Pfad vom zweiten Programm eintragen

den Kram dann als *.bat speichern und in den Autostart-Ordner ziehen (die beiden anderen Verknüpfungen da natürlich entfernen). Das sollte eigentlich alles sein

Edit: Nach start fehlte jeweils noch das doppelte Komma Anführungszeichen, da falle ich jedesmal drauf rein. Ich brauche echt nen Kaffee
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: dms, Restart001 und coasterblog
FatManStanding schrieb:
ich habe unter Windows 10 2 Programme als Verknüpfung im Autostart liegen, das eine benötigt das andere. Gibt es da eine bestimmte Reihenfolge (z. B. alphabetisch). ....
Die werden ja dann schon so gut wie gleichzeitig geladen.
Gibt es denn Probleme mit dem Programm?
 
Dafür gibt es doch die Aufgabenplanung. Die zu startenden Programme untereinander in einen Task, dann werden sie nacheinander gestartet. Warum sollte man da händisch Batch-Skripte schreiben?
 
McFritte schrieb:
timeout 30 <- Wartezeit in Sekunden
Viel Glück… Selbst auf die habe Minute würde ich mich nicht verlassen…

CoMo schrieb:
Dafür gibt es doch die Aufgabenplanung.
Theoretisch.
Praktisch sind die Intervalle fürs Warten nach einem Ereignis (z.B. Anmeldung) nicht wirklich brauchbar.
Was tun? Eine Aufgabe erstellen als XML auswerfen und diese Klartextdatei mit Gefühl frisieren ein geeignetes Warteintervall zu führen. Dann wieder importieren. Kein Hexenwerk.

CN8
 
hier wäre meine Lösung für Powershell:


PowerShell:
# Programm 1 starten
Start-Process -FilePath "C:\Pfad\zu\Programm1.exe"


# Warten, bis das Programmfenster von Programm 1 gestartet wurde
$Program1WindowTitle = "Titel des Programmfensters von Programm 1"
while (-not (Get-Process | Where-Object { $_.MainWindowTitle -eq $Program1WindowTitle })) {
    Start-Sleep -Seconds 1
}


# Programm 2 starten, nachdem das Programmfenster von Programm 1 gestartet wurde
Start-Process -FilePath "C:\Pfad\zu\Programm2.exe"

als *.ps1 in deinem autostart Bereich ablegen.
 
Auch dieser Fensterekennung traue ich nicht über den Weg. Je nach Lage muss man da einen Namen haben der sich nicht unmittelbar offenbart.

AutoIt das das selbe können soll hat (wenn auch bei anderem Ansatz) dies nicht gebacken bekommen.

Ja, das ist in der Tat eine genrelle Macke die MS aber nicht meint brauchbar lösen zu müssen.

CN8
 
jo na gut, dann hier ne Lösung ohne Programmfenster Namen.

PowerShell:
# Programm 1 starten
Start-Process -FilePath "C:\Pfad\zu\Programm1.exe"


# Warten, bis der Prozess von Programm 1 gestartet wurde
$Program1ProcessName = "Programm1.exe"
while (-not (Get-Process -Name $Program1ProcessName -ErrorAction SilentlyContinue)) {
    Start-Sleep -Seconds 1
}


# Programm 2 starten, nachdem der Prozess von Programm 1 gestartet wurde
Start-Process -FilePath "C:\Pfad\zu\Programm2.exe"

oder hier, wenn das Programm etwas länger benötigt bis es gestartet ist, der Prozess aber schon früher da ist:

PowerShell:
# Programm 1 starten
$Program1Process = Start-Process -FilePath "C:\Pfad\zu\Programm1.exe" -PassThru


# Warten, bis der Prozess von Programm 1 vollständig gestartet wurde
$Timeout = 60  # Anzahl der Sekunden, die gewartet werden sollen (Anpassen, falls erforderlich)
$Program1Process.WaitForInputIdle($Timeout)


if ($Program1Process.HasExited) {
    Write-Host "Programm 1 ist vor Ablauf des Timeouts beendet."
} else {
    Write-Host "Programm 1 ist gestartet. Starte jetzt Programm 2."


    # Programm 2 starten, nachdem der Prozess von Programm 1 gestartet wurde
    Start-Process -FilePath "C:\Pfad\zu\Programm2.exe"
}


cumulonimbus8 schrieb:
traue ich nicht über den Weg
Mag ja sein, manche Dinge muss man einfach ausprobieren und nicht jede Lösung hilft dem gesuchtem Problem.
Ich vertraue da lieber den Boardmitteln. Richtig angewendet, sind es sehr mächtige Werkzeuge.
 
Recruit schrieb:
Richtig angewendet, sind es sehr mächtige Werkzeuge.
Mächtig untauglich wie ich (PowerShell…) erkennen musste.
Ich bin eine alter DOS-Heini; Batches und Skripte (selbstgeklöppelt) setze ich gerne ein. Aber bei dieser Problematik tune ich mal lieber die Aufgabenplanung statt da ein PS-Skript im Autostart zu haben.
CN8
 
Zurück
Oben