ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
381
381
EMPFEHLEN
-
30.03.10 23:41 #1Kyrara Tutorials.de Gastzugang
Hallo,
Ich hab damals ein Grund Leergang in C gehabt und wurd von einem freund gefragt ob ich ihn ne kleine hilfsprogramm schreiben könnte nur hab ich leider keine ahnung obs überhaupt geht.
So soll es ablaufen:
---------------------------------
1. erste.exe startet
2. zweite.exe startet
3. erste.exe schließt sich wenn zweite.exe geschlossen wird.
----------------------------------
Das problem ist:
1. keine ahnung wie ich eine Exe starten kann über C
2. Weiß ich nicht mal wie die Überwachung funktionieren soll.
Hab selbst schon ein paar sachen gelesen aber nirgends das passende gefunden.
Wäre sehr dankbar wenn jemand vielleicht schon nen fertiges Code hätte den ich benutzen oder abschauen könnte.
MfG Kyrara
-
Unter Windows würde das so gehen. Die GR-irgendwas sind Typedefs, sollten also problemlos ersetzbar sein. Hier direkt ein Code-Block aus meiner Codebasis, mit etwas Drumherum. Müsste sich aber einfach in C umsetzen lassen, die eigentlichen Funktionen der WinAPI sind ja C.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
bool CWinUtils::StartAndWaitForProgram( const GR::tChar* szCommandLine, GR::u32* pExitCode, int iShowWindowFlags ) { STARTUPINFO sui; PROCESS_INFORMATION pi; memset( &sui, 0, sizeof( sui ) ); sui.cb = sizeof( sui ); sui.wShowWindow = iShowWindowFlags; GR::tString strFileName = szCommandLine, strCmdLine = szCommandLine; if ( ( strFileName.length() ) && ( strFileName[0] == '"' ) ) { // der Pfad ist in Anführungszeichen gehalten strCmdLine = strFileName; strFileName = strFileName.substr( 1 ); if ( strFileName.find( '"' ) != std::string::npos ) { strFileName = strFileName.substr( 0, strFileName.find( '"' ) ); } } else if ( strFileName.length() ) { if ( strFileName.find( ' ' ) != std::string::npos ) { strFileName = strFileName.substr( 0, strFileName.find( ' ' ) ); } } GR::tString strCurDir = strFileName.c_str(); while ( ( strCurDir.length() ) && ( strCurDir[strCurDir.length() - 1] != '\\' ) ) { strCurDir = strCurDir.substr( 0, strCurDir.length() - 1 ); } if ( strCurDir.length() ) { strCurDir = strCurDir.substr( 0, strCurDir.length() - 1 ); } if ( strCurDir.length() == 2 ) { strCurDir += '\\'; } GR::tChar szCmdLine[MAX_PATH]; wsprintf( szCmdLine, strCmdLine.c_str() ); if ( !CreateProcess( strFileName.c_str(), szCmdLine, NULL, NULL, FALSE, CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP, NULL, strCurDir.c_str(), &sui, &pi ) ) { return false; } MSG msg; DWORD dwExitCode = STILL_ACTIVE; do { Sleep( 20 ); if ( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) ) { GetMessage( &msg, NULL, 0, 0 ); if ( IsDialogMessage( ::GetParent( msg.hwnd ), &msg ) ) { continue; } if ( msg.message == WM_ENDSESSION ) { if ( (BOOL)msg.wParam ) { // das aufgerufene Programm will Windows beenden // -> Loop beenden break; } } TranslateMessage( &msg ); DispatchMessage( &msg ); } GetExitCodeProcess( pi.hProcess, &dwExitCode ); } while ( dwExitCode == STILL_ACTIVE ); CloseHandle( pi.hThread ); CloseHandle( pi.hProcess ); if ( pExitCode != NULL ) { *pExitCode = dwExitCode; } return true; }
-
Ich hab das zwar noch nie verwendet, aber so wie ich das sehe könnte folgende Funktion auch hilfreich sein:
http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
Vielleicht kann das auch jemand testen.
-
31.03.10 10:26 #4Kyrara Tutorials.de Gastzugang
Danke für die Hilfe habs hinbekommen ^_^
MfG Kyrara
Ähnliche Themen
-
Überwachung oä.
Von PC-Freak im Forum PHPAntworten: 6Letzter Beitrag: 18.03.10, 14:02 -
Raid Überwachung
Von merzi86 im Forum Linux & UnixAntworten: 2Letzter Beitrag: 17.06.08, 19:12 -
Überwachung von Datensatzänderungen
Von Romanticus im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 20.12.07, 16:55 -
Toll für VB überwachung
Von BruS im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 12.05.07, 12:44 -
Überwachung des Mausrads?
Von Shaijan im Forum C/C++Antworten: 1Letzter Beitrag: 27.03.04, 18:13





Zitieren
Login






