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.exe

    hast 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!


Anmelden zum Antworten