Prüfen ob bestimmtes Programm gestartet wird



  • Hi

    Ich schreibe grad ein Programm bei dem ich die ganze Zeit prüfen will ob ein bestimmtes anderes Programm gestartet wird.
    Z.B. soll mein Programm reagieren sobald notepad.exe gestartet wird.
    Weil ich keine WinApi(oder ähnliches)-Funktion gefunden habe die ausgelöst wird sobald ein beliebiges Programm gestartet wird hab ich mir aus der FAQ folgendes Beispiel zusammengebaut:

    DWORD Processes[1024],size;
    if (EnumProcesses(Processes,sizeof(Processes),&size))
     {
        for (int i=0; i<int(size/sizeof(DWORD)); i++)
        {
         char szProcessName[MAX_PATH] = "unknown";
         HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |PROCESS_VM_READ,FALSE,Processes[i]);
         if(hProcess)
            {
             HMODULE hMod;
             DWORD cbNeeded;
             if (EnumProcessModules( hProcess, &hMod, sizeof(hMod),&cbNeeded) )
                 GetModuleBaseName( hProcess, hMod, szProcessName,sizeof(szProcessName) );
            }
    
            if(strcmp(szProcessName, "notepad.exe")==0)
            {
             ShowMessage("Gefunden");
            }
         CloseHandle(hProcess);
        }
     }
    

    Ich habe aber leider keine Ahnung wie ich die Funktion einbinden soll, sodass sie ständig im Hintergrund läuft und sich meldet sobald notepad gestartet wurde.

    Danke schon mal für jegliche Hilfe

    Gruß



  • Hallo

    das sollte zum Besipiel in einen Timer, der auf 500ms o.ä. gestellt ist. Dann wird jede halbe Sekunde diese Überprüfung aufgeführt.

    Eventuell gibt es aber doch noch einen passenden WinAPI-Hook für Programmstarts. Dazu must du dich mal im WinAPI-Subforum umschauen.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.





  • Wird ihm nicht weiterhelfen. Prozesse zu enumerieren ist hier sicherlich angebrachter als Fenster zu enumerieren.

    /Edit: Ah OK, da ist auch so ne Abfrage für exe-Dateien dabei. Sorry. Da hier das Intervall angegeben wird, wird es sich wahrscheinlich genau um die Umsetzung von akari handeln.



  • Wird ihm nicht weiterhelfen. Prozesse zu enumerieren ist hier sicherlich angebrachter als Fenster zu enumerieren.

    Kommt auf die Anforderungen an; für Notepad ist es jedenfalls geeignet

    Da hier das Intervall angegeben wird, wird es sich wahrscheinlich genau um die Umsetzung von akari handeln.

    Eher weniger, das Programm ist steinalt, da kannt ich das Forum hier noch nicht



  • Danke für die Antworten.
    Hatte natürlich auch gleich an einen Timer gedacht aber nicht erwartet, dass das meinen Anforderungen genügt.
    Habe es jetzt aber damit versucht und klappt offensichtlich ganz gut.
    Auch wenn das wohl nicht ganz so die Profilösung ist 😛

    @ Christian
    Der Quelltext würde mich schon interessieren.
    Wäre nett wenn du mir den per Mail an montak@web.de schicken könntest falls du ihn nicht hier posten willst.

    Gruß


Anmelden zum Antworten