Wie kann ich ein bestimmtes Ereignis eintreten lassen?

Phizzo

Banned
Registriert
Dez. 2010
Beiträge
177
Hallo Leute.

Ich habe folgendes Problem: Ich suche schon länger nach einem Programm (oder einer Anleitung) wie man ein bestimmtes Ereignis unter Windows 7 eintreten lassen kann. In meinem konkreten Fall hieße das: Wenn ich ein Programm x starte, soll automatisch zum Start jenes Programmes x ein anderes Programm y starten. Und wenn ich Programm x schließe, soll sich Programm y auch schließen... Ist dies möglich?

Mit dem Programm TimeComX bin ich nicht ganz zufrieden, da man nur ein Ereignis einstellen kann.
Mit dem Windows Eventmanager bin ich auch nicht weitergekommen, da ich nicht die Ereignis - ID (nämlich die vom öffnen des Programmes x) herausgefunden habe...

Was kann ich machen? MfG, Phizzo
 
öffnen könntest du die Programme ja per batch...
beim schließen kann ich leider nicht helfen.

schonmal nach alternativen zu timecomx gegoogled?
 
Das geht ganz einfach mit AutoIt.
Download: http://www.autoitscript.com/site/autoit/downloads/

Beispiel: Wenn der Windows-Editor ("calc.exe") gestartet wird, soll auch der Rechner ("calc.exe") automatisch gestartet werden.
Code:
$programA = "notepad.exe"
$programB = "calc.exe"

While True
	ProcessWait($programA)
	$pidB = Run($programB)
	ProcessWaitClose($programA)
	ProcessClose($pidB)
WEnd
Nachdem du AutoIt von der Website heruntergeladen und installiert hast, kannst du das hier angehängte Programm per Doppelklick starten und in der Taskleiste per Rechtsklick beenden.
Du kannst die .au3-Datei mit dem Editor bearbeiten und "$programA" bzw. "$programB" durch andere Prozesse ersetzen.
 

Anhänge

Zuletzt bearbeitet:
Danke erstmal! Wie verweise ich auf ein Programm, das nicht in \System32 ist? Z.B. C:\Programme\...exe

Ich habs das schon mal mit Batch probiert, da aber das erste Programm mit Administrationsrechten geöffnet wird und mich die User Control um Erlaubnis fragt, konnte das zweite Programm nicht gestartet werden. Werde ich dieses Problem konfrontieren?

Hier ist was ich in einer Datei will:
Programm B ("F:\Programme\Fraps\Fraps.exe" [benötigt Administrationsrechte])
Programm A ("F:\Games\CoD 4 MW2\iw4mp.exe") wird automatisch geladen. Wenn Programm A geschlossen wird, wird auch Programm B geschlossen.
Ergänzung ()

Was ich versucht habe, aber nciht funktioniert...

Code:
Run "F:\Programme\Fraps\Fraps.exe"
Run "F:\Games\CoD 4 MW2 - Phizzo Rel\iw4mp.dat"

$programA = "Fraps.exe"
$programB = "iw4mp.exe"

While True
	ProcessWait($programA)
	$pidB = Run($programB)
	ProcessWaitClose($programB)
	ProcessClose($pidA)
WEnd
Ergänzung ()

Quakfrosch schrieb:
öffnen könntest du die Programme ja per batch...
beim schließen kann ich leider nicht helfen.

schonmal nach alternativen zu timecomx gegoogled?

Ja, das hab ich auch einfach so mit Notepad und Batch hinbekommen:

Code:
start F:\Programme\Fraps\fraps.exe
start iw4mp.dat
 
Zuletzt bearbeitet:
An Deinen Codes ist doch was faul,

Run "F:\Programme\Fraps\Fraps.exe"
Run "F:\Games\CoD 4 MW2 - Phizzo Rel\iw4mp.dat" ??
$programA = "Fraps.exe"
$programB = "iw4mp.exe" ??

Dat-Dateien können nicht über "run" ausgeführt werden.

Programm die nicht im Systemordner liegen kann man starten, indem man die Pfade in die Umgebungsvariablen eingibt, dann kennt Windows den Pfad. Einfach auf bearbeiten gehen und dazu eintragen, siehe Bild.
Z.B.:
c:\Programme\ATI Stream\bin\x86;C:\Programme\AMD APP\bin\x86;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Programme\ATI Technologies\ATI.ACE\Core-Static;C:\Programme\Microsoft USB Flash Drive Manager\;C:\Programme\Gemeinsame Dateien\Acronis\SnapAPI\
 

Anhänge

  • Variablen-bearbeiten.png
    Variablen-bearbeiten.png
    72,3 KB · Aufrufe: 167
Das mit .exe und .dat egal, weil durch die .exe Datei die .dat Datei aufgerufen wird und auch beide als solche als Prozesse gekennzeichnet sind.
Ich hab das ganze ja mit AutoIt programmiert. Wie würdest du das machen? Die Pfade sind ja angegeben.
 
Der Code aus dem ersten Post ist fehlerhaft: Ich habe an einigen Stellen A und B verwechselt -.-'
Ich glaube, du hast die Idee hinter meinem Programm nicht ganz verstanden (ist auch meine Schuld). Das Script, das ich anfangs gepostet habe, war so gedacht, dass es nur im Hintergrund läuft und darauf wartet, dass du das erste Programm ganz normal startest, und dann B automatisch kommt.
Code:
; Warte, bis der Prozess A manuell von dir gestartet wurde
; Starte Programm B.
; Warte, bis Prozess A von dir beendet wurde.
; Beende Programm B
; Beginne wieder von vorne
Bei $programA muss nur der Prozessname stehen, so wie er auch im Taskmanager zu sehen ist. Deshalb nenne ich das ab jetzt $processA.
Nur bei $programB muss der volle Pfad angegeben werden (also C:\Programme\...)
In deinem Fall also:
Code:
$processA = "iw4mp.dat"
$programB = "F:\Programme\Fraps\Fraps.exe"
$processB = "Fraps.exe"

While True
	ProcessWait($processA)
	Run($programB)
	ProcessWaitClose($processA)
	ProcessClose($processB)
WEnd

Der Nachteil an dem Script ist natürlich, dass B wirklich immer automatisch kommt, sobald du A startest. Aber dafür kannst du das Script in der Taskleiste ein- und ausschalten.

Willst du aber, dass A und B über das Script gestartet werden, muss der Code etwas verändert werden. Außerdem sieht es so aus, als müsstest du iw4mp.exe starten, aber danach läuft nur iw4mp.dat.
Insgesamt müsste es also ungefähr so aussehen:
Code:
$programA = "F:\Games\CoD 4 MW2\iw4mp.exe"
$processA = "iw4mp.dat"
$programB = "F:\Programme\Fraps\Fraps.exe"
$processB = "Fraps.exe"

Run($programA)
Run($programB)
Sleep(30000);
ProcessWaitClose($processA)
ProcessClose($processB)

Zur UAC: Soweit ich weiß, dann man diese für bestimmte Programme ausschalten. Hab aber leide kein Windows Vista/7 zum Ausprobieren. Einfach mal die Suchmaschine anwerfen.
 
Die Dat wird durch die Exe aufgerufen, aber nur wenn sie damit auch verknüpft ist, eine *.dat Datei ist Bestandteil des Systemes und kann nicht automatisch von einem fremden Programm aufgerufen werden, es geht um die Endung. Dann würdest Du ja z.B. die "ntuser.dat" auch mit dem $programA = "F:\Games\CoD 4 MW2\iw4mp.exe"
ausführen können.
Deshalb rufst Du das Programm auf und sagst welchen Prozess es öffnen muss. Bin nicht der Programmierexperte aber soviel habe ich noch behalten aus der Schule.

$programA = "F:\Games\CoD 4 MW2\iw4mp.exe" ruft den $processA = "iw4mp.dat" auf.
 
Zurück
Oben