Überprüfen ob Programm / Prozess läuft



  • Ja habs gerade gesehen. Vielen Danke, klappt prima 😃



  • na dann iss jah gud o 👍



  • hallo,

    ich nutze diesen snippet auch um herauszufinden ob ein bestimmtes programm läuft. funzt prima! danke schonmal dafür 🙂

    aber auf einige sachen kann ich mir keinen reim machen. evtl. könnte das mal jemand für mich entschlüsseln 😉

    wozu dient die typedef hier genau? das kapier ich überhaupt nicht 😞

    typedef BOOL (WINAPI *TH32_PROCESS) (HANDLE hSnapShot, LPPROCESSENTRY32 lppe);
    

    was genau wird hier deklariert, initialisiert und zugewiesen?

    PROCESSENTRY32 pe32 = { 0 }; 
    HANDLE hSnapshot    = NULL; 
    
    HINSTANCE hDll = LoadLibrary("kernel32.dll"); 
    
    pProcess32First=(TH32_PROCESS)GetProcAddress(hDll,"Process32First"); 
    pProcess32Next=(TH32_PROCESS)GetProcAddress(hDll,"Process32Next"); 
    
    bool process_state = FALSE;
    

    für sonstige erklärung wär ich echt dankbar.

    könnte ich auch etwas vom code abändern oder weglassen?? nutze kein c++ in dem programm sondern nur c und die winapi.



  • K 141 schrieb:

    nutze kein c++ in dem programm sondern nur c und die winapi.

    Das ist reines C...

    K 141 schrieb:

    was genau wird hier deklariert, initialisiert und zugewiesen?

    PROCESSENTRY32 pe32 = { 0 }; 
    HANDLE hSnapshot    = NULL;
    

    Sowohl pe32 als auch hSnapshot werden mit 0 initialisiert.

    HINSTANCE hDll = LoadLibrary("kernel32.dll"); 
    pProcess32First=(TH32_PROCESS)GetProcAddress(hDll,"Process32First"); 
    pProcess32Next=(TH32_PROCESS)GetProcAddress(hDll,"Process32Next"); 
    bool process_state = FALSE;
    

    ...dann wird die kernel32.dll geladen und die beiden benötigten Funktionen importiert...



  • Öhm, Kernel32.dll laden? Ich glaube, wenn du das nötig hast, dann dürfte dein Programm gar nicht erst starten.



  • Ich find's auch irgendwie unsinnig und würde die kernel32.lib direkt verlinken...



  • Vor allem er läd sie und prüft dann nicht, ob sie auch geladen wurde. Wenn schon dann bitte richtig überflüssig. 😃

    Der Cast:

    if (hSnapshot != (HANDLE) -1)
    

    ist auch so eine Stilblüte. 🙄 Warum nicht die Konstante INVALID_HANDLE_VALUE nehmen?



  • Hepi schrieb:

    Ich find's auch irgendwie unsinnig und würde die kernel32.lib direkt verlinken...

    Das macht er doch auch. Schau mal zwei Zeilen weiter:

    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    

    Damit ist dann nicht nur das Laden überflüssig, sondern auch die GetProcAddress-Aufrufe. Außerdem fehlt der Aufruf von FreeLibrary. 🤡



  • öhm

    using namespace std;
    

    ist reines C ja? :p kenn das nur aus C++



  • LOL. Immer wieder lustig.



  • if(fopen("test.exe","a")==NULL)
    {
    //Programm ist gestartet
    }

    Ist doch einfacher, oder?
    Weil, wenn die Datei gestartet ist, kann man nichts an sie anhängen. Deshalb funktioniert das auch.
    *gg*

    mfG ©h


Anmelden zum Antworten