Prozesse durchlaufen und beenden



  • Ich möchte nachdem alle Prozesse durchlaufen wurden
    aus der while-Schleife raus.
    Aber warum geht das mit "photo != NULL" nicht ?

    [cpp]HANDLE proc;
    int i = 0;
    PROCESSENTRY32 process;
    void* photo = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    Process32First(photo,&process);
    while(photo != NULL) // warum nicht bei NULL ?
    {
    Process32Next(photo,&process);
    proc = OpenProcess(PROCESS_ALL_ACCESS,false,process.th32ProcessID);
    i++;
    if(!strcmp(process.szExeFile,item))
    {
    TerminateProcess(proc,0);
    break;
    }
    }
    [/cpp]



  • Hallo,

    Aero schrieb:

    Aber warum geht das mit "photo != NULL" nicht ?

    Weil keiner gesagt hat, daß photo NULL werden kann. Nach MSDN-Dokumentation ist photo ein "in(put)"-Parameter und wird deswegen garantiert nicht von der Funktion Process32Next geändert!

    Auch sonst gäbe es noch einiges zu kritisieren (z.B. void* photo, photo ist ein HANDLE), deswegen besser das Beispiel hier

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/taking_a_snapshot_and_viewing_processes.asp

    genau studieren und anpassen.

    MfG


Anmelden zum Antworten