wenn bla.exe nicht geöffnet --> öffnen



  • Wie du es mit dem DevC++ hinkriegst weiss ich leider nicht. Ich benutze VC++6.0 und habe nie devc++ benutzt, also tut mir leid.
    Und jetzt zu dem Code:

    #include <windows.h>  
    #include <tlhelp32.h>  
    
    int CheckProcessState(char* Process); // Funktion bekannt machen (Prototyp)
    
    int WINAPI WinMain(HINSTANCE hInstance, 
                       HINSTANCE hPrevIsntance, 
                       PSTR szCmdine, int iCmdShow)
    {
       int Result;
       Result = CheckProcessState( "mirc.exe"); // leuft mirc.exe ???
       if( Result )
          MessageBox(NULL, "Process mirc.exe leuft", "Info", 0);
       else
          MessageBox(NULL, "Process mirc.exe leuft nicht", "Info", 0);
    
       return 0;
    }
    
    int CheckProcessState(char* Process)  
    { 
       HANDLE snapshot; 
       PROCESSENTRY32 pe;  
       snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);  
       pe.dwSize=sizeof(pe);  
       if(Process32First(snapshot, &pe))  
       { 
          do  // Alle laufenden Processe durchgehen
          { 
            if( lstrcmp(Process, pe.szExeFile) == 0 )// Wenn Process leuft  bereits 
            return (1); // Process leuft 
          }while(Process32Next(snapshot,&pe)); 
        }  
        CloseHandle(snapshot); 
        return (0);      // Process leuft nicht                               
    }
    


  • Könntest du das "die Zeile gefällt ihm nicht" mal noch etwas präzisieren?! :p



  • Die Zeile :
    snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL); gefällt ihm nicht
    komisch gell?
    🙄 🙄 Aber die Zeile:
    do
    {
    prinf(?%s?,pe.szExeFile); << Aber die gefällt ihm offensichtlich 😃
    }while(Process32Next(snapshot,&pe));
    }

    Also ich denke die Zeile gefählt ihm nicht weil da ein Fehler gibt, sondern sehr warscheinlich weil in Zeile prinf(?%s?,pe.szExeFile); ein Fehler gibt, so wäre es richtig prinf("%s\n",pe.szExeFile); Die Zeile gibt es nun im Code nicht mehr, also muß funktionieren. Hab aber net getestet 😉



  • Also hab letzte Codebeispiel getestet und bei mir leuft es einwandfrei
    0 Fehler
    0 Warnungen



  • ja, jetzt bin ich vollends verwirrt 😕
    wenn du nochmal komplett den code posten könntest wärest du mein gott 🙂



  • Der Code steht doch bereits 5 Postings weiter oben 🙄



  • flenders schrieb:

    Der Code steht doch bereits 5 Postings weiter oben 🙄

    welcher nicht funktioniert :(((((



  • Inwiefern? Fehlermeldung beim Compilieren? Speicherzugriffsverletzung? ...



  • Falky schrieb:

    flenders schrieb:

    Der Code steht doch bereits 5 Postings weiter oben 🙄

    welcher nicht funktioniert :(((((

    Also der Code funzt bei mir, hab extra getestet 0Fehler + 0 Warnung

    #include <windows.h>   
    #include <tlhelp32.h>   
    
    int CheckProcessState(char* Process); // Funktion bekannt machen (Prototyp) 
    
    int WINAPI WinMain(HINSTANCE hInstance,  
                       HINSTANCE hPrevIsntance,  
                       PSTR szCmdine, int iCmdShow) 
    { 
       int Result; 
       Result = CheckProcessState( "mirc.exe"); // leuft mirc.exe ??? 
       if( Result ) 
          MessageBox(NULL, "Process mirc.exe leuft", "Info", 0); 
       else 
          MessageBox(NULL, "Process mirc.exe leuft nicht", "Info", 0); 
    
       return 0; 
    } 
    
    int CheckProcessState(char* Process)   
    {  
       HANDLE snapshot;  
       PROCESSENTRY32 pe;   
       snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);   
       pe.dwSize=sizeof(pe);   
       if(Process32First(snapshot, &pe))   
       {  
          do  // Alle laufenden Processe durchgehen 
          {  
            if( lstrcmp(Process, pe.szExeFile) == 0 )// Wenn Process leuft  bereits  
            return (1); // Process leuft  
          }while(Process32Next(snapshot,&pe));  
        }   
        CloseHandle(snapshot);  
        return (0);      // Process leuft nicht                                
    }
    

    Wenn es bei dir nicht/mir Fehlern kompillieren lässt dann kann es nur an dem Compiller liegen. Warscheinlich muß du noch etwas includieren oder noch welche
    *.libs einbinden obwohl ich nicht glaube 😕



  • Hallo ich bin neu hier und C++ anfänger.

    Ich habe ein Problem unzwar möchte ich checken ob ein Prog noch offen ist.
    Das geht auch.
    Ich checke das jede Sekunde durch einen Timer.
    Nur das Problem ist das wenn das Prog läuft der Arbeitsspeicher voll läuft.
    Es liegt auf jedenfall an der Funktion.
    Kann mir einer helfen?

    Gruß Space

    Den Code hab ich genommen:

    #include <windows.h>
    #include <tlhelp32.h>
    
    int CheckProcessState(char* Process)
    {
       HANDLE snapshot;
       PROCESSENTRY32 pe;
       snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
       pe.dwSize=sizeof(pe);
       if(Process32First(snapshot, &pe))
       {
          do
          {
            if( lstrcmp(Process, pe.szExeFile) == 0 )// Wenn Process leuft  bereits
            return (1); // Process leuft
          }while(Process32Next(snapshot,&pe));
        }
        CloseHandle(snapshot);
        return (0);      // Process leuft nicht                              
    }
    


  • ist der RAM auch voll, wenn du das ohne timer laufen lässt? 😃

    MFG
    Ace



  • Nö ist er nicht, nur dann checkt er es ja nur einmal.
    Aber es liegt an der funktion weil wenn der Timer läuft und die Funktion nicht genutzt wird sondern was anderes gemacht wird läuft der ram nicht voll nur bei der Funktion.

    Hat vieleicht einer eine Idee?

    Gruß Space


Anmelden zum Antworten