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
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: