Suche guten Rat!

napstermania

Mitglied
Hallo ich sitze hier gerade an einem Programm welches mir alle 2 sec einen laufenden Prozess ermitteln soll!

Wenn der Prozess aktiv ist soll es eine bestimmte Funktion ausführen! Aber in der Funktion liegt nicht das problem!

Für die Abfrage des Prozesses benutze ich eine (for-schleife) nur wenn ich jetzt mein Programm fertig kompiliere und es ausfürhe zum Testen, geht meine Prozessorauslastung auf 100% hoch und dementsprechend langsam ist dann auch mein System!

Zum überblick hier mal mein code etwas vereinfacht...

Code:
int CheckProcess(char* exename);
TCHAR *Tempstr="Testexe.exe";

bool ProcessAlive(char* exename)
{
    //hab ich weggelassen zur übersicht!
    //denke hier liegt auch nicht der fehler^^
}

int CheckProcess (char* exename)
{
    int i;
    i = 0;
    i++;

    for ( i = 0; i = 2000; i++ )
    {
        if(ProcessAlive(TempStr))
        {
        MessageBox(hwnd,"Prozess Running", "Running",
        MB_ICONINFORMATION);
        i = 0;
        } else {
        i = 1;
        i++;
        }
    }
    return 0;
}

"Die MessageBox is nur im moment für mich zur kontrolle"

Die Prozessabfrage funktioniert auch wenn ich sie über einen button abfrage!
Dafür beutze ich den "CreateToolhelp32Snapshot" Der mir ja allerding alle prozesse ermittelt! :/

Aber würde gerne den Button weglassen und das praktisch automatisch im hintergrund laufen lassen! So lang bis der Prozess aktiv ist!

Was mach ich da falsch? Oder wie könnte ich die funktion "ProcessAlive" noch alle 2 sec abfragen?

Wenn mir da jemand bitte weiterhelfen könnte wäre ich sehr dankbar

:D!
 
Zuletzt bearbeitet:
So, wie deine Schleife aussieht, wird maximal 2000 mal die Funktion aufgerufen. Und zwar ohne Päuschen. Besser wäre es so oder so ähnlich:
Code:
...

bool weitermachen = true;

while { weitermachen }
{
  weitermachen = ProcessAlive(TempStr); // oder so ähnlich
  
  Sleep( 2000 ); // 2 sec ruhen, ohne den Rechner lahmzulegen
}

..
 
Zurück