C++ wird das eine prog beendet, soll auch das andere enden

AW: c++ wird das eine prog beendet, soll auch das andere enden

Ohne jetzt großartig Ahnung zu haben, würde ich behaupten dass das schonmal Systemabhängig ist.
Unter Linux (Unix?) könnte man beispielsweise einfach den Befehl killall Programmname an das System senden. Das ist aber tendenziell eher unschön ;)
Oder aber man holt sich irgendwoher (kommunizieren die beiden Programme?) die PID des anderen Prozesses und killt ihn darüber. Hier müsste die Linux Clib sogar einen eigenen Befehl für haben.

Wie das ganze nun unter Windows aussieht, oder ob es gar Plattformunabhängig geht, weiß ich nicht, habe ja schon erwähnt dass ich eigentlich keine Ahnung habe :)
 
AW: c++ wird das eine prog beendet, soll auch das andere enden

Hi,

wenn ich das Richtig verstanden habe, überwacht dein Prog. ein anders und wenn dieses beendet wird soll dein Programm ein drittes beenden.(?)


Die einzige Methode die ich kenne, ist es mittels Process32First und Process32Next an die ProcessID zu gelangen. Mit OpenProcess erhalt man den entsprechenden Handle. Den Prozess beendet man dann mit TerminateProcess.

Voraussetzung ist das du die Namen der Prozesse kennst

http://msdn.microsoft.com/en-us/library/ms686832(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms684847(VS.85).aspx
 
Zuletzt bearbeitet: (Nachtrag)
AW: c++ wird das eine prog beendet, soll auch das andere enden

danke für die schnellen antworten
also es ist ein windows prog (nix linux/unix ;-) )
genauergesagt ein spiel mit dazugehörendem "backround-player"
d.h.
Die game.exe in der man fröhlich rummrennen kann, soll, wenn sie beendet wird die hintergrundmusik.exe mit beenden

Ich weiß, ich könnte die musik auch direkt ins spiel einbauen, aber das macht den quellcode unübersichtlich....

Ach ja, game.exe und hintergrundmusik.exe kennen sich gegenseitig nicht.

in der msdn hab ich geschaut, aber hilft nicht...

MfG

M.E.
 
AW: c++ wird das eine prog beendet, soll auch das andere enden

tach

wie öffnest du die hintergrundmusik.exe eigentlich?

Wenn mich meine Erinnerung nicht täuscht
dann kannst du doch einfach mit "fclose" die hintergrundmusik.exe schließen.
Machste eben nen Beenden-Button der die game.exe schließt und gleichzeituig mit Hilfe von
"fclose" die hintergrundmusik.exe mitschließt.

Also kann auch sein das ich gerade totalen Müll geschrieben habe, aber normal müsste das doch Funktionieren.

Falls nicht entschuldige;)
 
AW: c++ wird das eine prog beendet, soll auch das andere enden

Also wenn du dich von Anfang an damit beschäftigt hättest, wie man vernünftig Musik in ein Spiel einbaut, währest du schon lange fertig ;)
Ergo: Gleich richtig machen! Lerneffekt ist höher, beim nächsten mal gehts einfach von der Hand. Der Code ist schöner (auch wenn du es niht glaubst). Und generell ist es einfach nur etwas übel zwei Programme einen Zweck erledigen zu lassen...
 
AW: c++ wird das eine prog beendet, soll auch das andere enden

Deine "Lösung" ist zwar nicht besonders elegant, aber einfach zu realisieren.

Zu Beginn deines Prog. (game.exe) startest du einfach mittels
CreateProcess("..\hintergrundmusik.exe",...) den Prozess.
Zum beenden benutzt du TerminateProcess.

Hier noch ein kleines Bsp. im msdn:
http://msdn.microsoft.com/en-us/library/ms682512(VS.85).aspx

Edit:

Code:
// Globale Variablen:
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

...

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

	switch (message)
	{
	case WM_CREATE:
		CreateProcess(L"C:\\hintergrundmusik.exe\0", NULL, NULL, NULL,FALSE,0,NULL, NULL, &si,&pi );
		break;
	case WM_DESTROY:
		TerminateProcess(pi.hProcess,0);
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
	}
	return 0;
}
 
Zuletzt bearbeitet: (Edit)
Zurück
Oben