was heißt das? wie kann ich das programm beenden?
-
CHAR szCommand[MAX_PATH]= "C:\\new_Downloads\\webserver\\xampp\\apache\\bin\\apache.exe"; PROCESS_INFORMATION pi; STARTUPINFO si; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); CreateProcess( NULL, szCommand, 0, 0, 0, CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &si, &pi);
kann mir einer die funktion da erklären von createprocess aus der msdn werd ich net schlau! komischer weiße schließt sich das win32 application fenster nicht nach createprocess...warum das denn?????
ich will folgendes machen:
überprüfen ob das programm schon ausgeführt wird? (das heißt obs vor dem starten der exe cpp schon läuft?)
wenn ja das laufende programm: apache.exe beenden!
andern falls das programm mit createprocess siehe oben starten!!!lg surf.
-
Wozu machst du deswegen extra einen neuen Thread auf? Tu das nie wieder!
-
wie kann ich überprüfen ob das exe programm schon ausgeführt wird? (das heißt obs vor dem starten der exe cpp schon läuft?)
wenn ja dann will ich die exe datei beenden....also mit createprocess schließen!!! wie geht das???? bitte um hilfe!!!
lg surf.
-
was ist cpp exe?
Beschreib doch einfach mal in kurzen klaren vollständigen deutschen Sätzen was du tun willst?
ohne das kann man nur raten.Und ich hab keinen Bock auf Rätsel!!!!!!!!!!!
-
surf. schrieb:
...also mit createprocess schließen!!!
Du willst was?
-
1.) ich will schauen ob ein exe programm schon ausgeführt wird!
2.) ich will ein exe programm starten:
CHAR szCommand[MAX_PATH]= "C:\\new_Downloads\\webserver\\xampp\\apache\\bin\\apache.exe"; PROCESS_INFORMATION pi; STARTUPINFO si; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); CreateProcess( NULL, szCommand, 0, 0, 0, CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &si, &pi);
3.) ich will eine bestimmtes exe programm beenden! mit terminate???
-
1.) FindWindow, EnumWindows oder Process32First & Co.
3.) http://c-plusplus.net/forum/viewtopic.php?t=39369
(hWnd bekommst du auch von FindWindow bzw. EnumWinows und Thread- bzw. ProcessID dann über GetWindowThreadProcessId )
-
/**************************************************************************** Bestimmt das zum übergebenen Prozess-Exectuable gehörende Prozess-Handle und gibt es zurück. Übergabe strProcessExe Prozess-Executable. dwDesiredAccess Benötigter Prozess-Zugriff. Rückgabe Zugehöriges Handle oder NULL im Fehlerfall. *****************************************************************************/ HANDLE GetProcessHandle( CString strProcessExe, DWORD dwDesiredAccess ) { HANDLE hSnapShot; // System-Snap-Shot-Handle PROCESSENTRY32 PEntry; // Process-Enumerations-Struktur HANDLE hProcess; // Prozess-Handle CString strExeFile; // Hilfssstring BOOL bOK; // Abbruch-Flag // Liste aller im System laufenden Prozesse erstellen hSnapShot=::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); if( hSnapShot==INVALID_HANDLE_VALUE ) // Fehler aufgetreten return NULL; // Prozess-Executable in Kleinbuchstaben wandeln strProcessExe.MakeLower( ); // Prozess-Liste durchlaufen PEntry.dwSize=sizeof( PEntry ); bOK=::Process32First( hSnapShot, &PEntry ); for( ; bOK; bOK=::Process32Next( hSnapShot, &PEntry )){ // Pozess-ID in Handle umwandeln hProcess=::OpenProcess( dwDesiredAccess, FALSE, PEntry.th32ProcessID ); if( hProcess==NULL ) // Umwandlung misslungen continue; // Prozess-Executable in Kleinbuchstaben wandeln und prüfen strExeFile=PEntry.szExeFile; strExeFile.MakeLower( ); if( strExeFile.Find( strProcessExe )!=-1 ) // Passenden Prozess gefunden, Handle zurückgeben return hProcess; } // Nichts Passendes gefunden return NULL; } //Damit kannst Du mit TerminateProcess( GetProcessHandle( "test.exe", PROCESS_TERMINATE ), 0 ); /*einen laufenden Prozess "test.exe" beenden. Das gelingt aber nur, wenn der ausführende Benutzer auch die entsprechenden Rechte besitzt. GetProcessHandle( ... ) kehrt bei fehlenden Rechten der einem anderen Fehler mit NULL zurück. Des Weiteren musst Du darauf achten, bei der Executable keinen Pfad anzugeben.*/
bitte mal testen!!!!!!!!!!!!
-
ich weiß net wies fenster heißt sondern sehe in der taskleiste nur apache.exe
was machs i dann processterminate so wie oben?????
bitte das oberige mal testen und mir sagen obs funzt!!!
danke.lg surf.
-
TerminateProcess ist aber bissl sehr radikal! Wie du es besser machen kannst: siehe mein oben stehender Link
-
1. problem: das ist ein dos fenster....
2. problem: ich weiß net wies fenster heißt sondern sehe in der taskleiste nur apache.exehast du das obrige mit terminateprozess getestet?
lg
-
Schau doch mal mit Spy++ o.ä. nach, wie das Fenster heißt (normalerweise das, was in der Titelleiste steht)
Zum Testen hab ich jetzt keine Lust und Zeit mehr - morgen ganz vielleicht
-
kennst du apache server???? apache.exe ist das ich beenden möchte!!!
wenn ich das starte manuell öffnet sich ein fenster:
C:\WINDOWS\System32\cmd.exe
das ist ein dos fenster!!!ich glaub net das das mit spy++ geht oder wie da heißt!!!!
ich sehe in der taskleiste ja apache.exe
hab mir gedacht mit processterminate mit meinem beispiel....ka ahnung ob das geht???? bitte mal testen und mir sagen
das zu beenden!was meinst du???
lg flasher!
-
im taskmanager unter prozesse sehe ich
apache.exe
wollt ich sagen!