2010-03-14 12 views
6

Szukałem przykładów funkcji Win32 API C++ TerminateProcess(), ale nie mogłem znaleźć żadnych.Funkcja C++ TerminateProcess

nie jestem zaznajomiony z Win32 API w ogóle, a więc chciałem zapytać, czy ktoś tutaj, kto jest lepszy w tym niż ja mógłby pokazać mi przykład dla,

  • Odzyskiwanie dojście procesu przez jego PID musi go zakończyć, a następnie wywołać z nim TerminateProcess.

Jeśli nie znasz się na C++, pomocny byłby również odpowiednik C#.

+0

Po prostu szukasz tej funkcji WINAPI OpenProcess http://msdn.microsoft.com/en-us/library/ms684320%28VS.85%29.aspx? Połączenie tego z TerminateProcess nie powinno być zbyt trudne. –

+0

Nie, chcę zakończyć uruchomiony proces. Dlatego wspomniałem, że najpierw muszę odzyskać PID. – jemper

+1

Gdy ktoś poda ci link, przeczytaj go. Nie zakładaj od imienia, co robi. W rzeczywistości OpenProcess tworzy uchwyt procesu, biorąc pod uwagę PID, który jest dokładnie tym, o co prosiłeś. @Charles: To powinna być odpowiedź zamiast komentarza. –

Odpowiedz

14

Aby odpowiedzieć na oryginalne pytanie, w celu pobrania dojście procesu przez jego PID i nazywają TerminateProcess, trzeba kod jak poniżej:

BOOL TerminateProcess(DWORD dwProcessId, UINT uExitCode) 
{ 
    DWORD dwDesiredAccess = PROCESS_TERMINATE; 
    BOOL bInheritHandle = FALSE; 
    HANDLE hProcess = OpenProcess(dwDesiredAccess, bInheritHandle, dwProcessId); 
    if (hProcess == NULL) 
     return FALSE; 

    BOOL result = TerminateProcess(hProcess, uExitCode); 

    CloseHandle(hProcess); 

    return result; 
} 

Należy pamiętać, że TerminateProcess nie pozwala na jego cel do czyszczenia w górę i wyjść w prawidłowym stanie. Zastanów się dwa razy przed użyciem.

+0

Jak mogę uzyskać PID procesu? – BlackBear

+0

Jaki rodzaj identyfikatora posiadasz w procesie, dla którego chcesz uzyskać PID? –

+0

Tylko jego nazwa (z Taskmanager) – BlackBear