programm starten und wieder beenden

auriga

Grünschnabel
child prozess starten und wieder beenden

hallo

ich habe eine einfache anwendung die eine externe exe startet mit winexec nun will ich aber dass beim beenden meines programms auch das externe programm beendet wird - geht das einfach ?

ich hatte an sowas wie eine globale hwnd variable gedacht mit der ich die zweite anwendung finde - aber habe keine ahnung wie das genau geht.

also erstens wie ich die hwnd variable herausbekomme global speichere und wie ich die zweite anwendung dann beende

danke für jeden hinweis

hier der startcode um den childprozess (versteckt) zu starten:

CString Exec;

// Create process and wait for completion
ZeroMemory( &sInfo, sizeof( sInfo ) );
sInfo.cb = sizeof( sInfo );
sInfo.dwFlags = STARTF_USESHOWWINDOW;
sInfo.wShowWindow = SW_SHOWMINIMIZED;

Exec = "mysql/bin/mysqld.exe";

CreateProcess( NULL, Exec.GetBuffer( Exec.GetLength() + 1 ), NULL, NULL, FALSE, 0, NULL, NULL, &sInfo, &pMysql );
Exec.ReleaseBuffer();

WaitForSingleObject(pMysql.hProcess, 5000L);

und das beenden was nicht klappt:

CloseHandle( pMysql.hThread );
CloseHandle( pMysql.hProcess );

die Variable pMysql ist in der .h Datei definiert :

PROCESS_INFORMATION pMysql;
STARTUPINFO sInfo;

leider bin ich zu blöd mir den inhalt mit ner messagebox ausgeben zu lassen - ist ja kein string sondern struct und selbst wenn ich das HANDLE ausgeben will ist das ein inkompatibler typ und ich weiss nicht wie ich den umwandeln kann
 
Zuletzt bearbeitet:
jo also mit terminateprocess bekomme ich zwar mysql beendet aber nicht apache - bzw nur einmal

apche läuft aber 2 mal mit findwindow und sendmessage an das apache fenster klappt das auch nicht - alles mist

mysql beendet sich ja nun normal nur den apache bekomme ich nicht komplett beendet
 
Hi,

nur ne Idee: (keine ahnung ob`s funktioniert)

Prozess mit einem Interupt beenden.
" int kill(Pitd_t Pid, int Signal); "
die ProzessID ist glaub ich in der PROCESS_INFORMATION-Strucktur vorhanden.

Code:
#include <signal.h>
...
kill(pMysql.dwProcessId,9);
...
 
wo ist kill definiert ?

in der signal.h ?

obwohl ich die datei include findet cl kill nicht - nichtdeklarierter bezeichner

habe das noch nie benutzt


danke
 
hi,
ich hab das mal unter Linux gemacht ... nun, vieleicht gibt es die Funktion nur unter Linux ;)
Es war ja nurn Gedanke.

Mfg Col.Blake
 
scheint so zu sein - jednefalls kann ich das unter windows nicht finden

ich arbeite zwar mit cygwin unter windows aber das projekt benötigt einige sachen von vc++ 6

(firefox embedding)

mittlerweile habe ich wenigstens so halbwegs einige sachen hinbekommen aber das mit den prozess apache ist rotz

warum startet der mist eigentlich 2 mal ?

nur dadurch kann ich das ganze nicht richtig kicken.

aber wenn das ganze auf einer cd ist wärs schlecht wenn noch ein prozess an ist während man die cd auswerfen will.
 
Zurück