2010-03-14 12 views
6

J'ai recherché des exemples pour la fonction C++ Win32 API TerminateProcess() mais je n'en ai trouvé aucune.Fonction C++ TerminateProcess

Je ne suis pas familier avec l'API Win32 en général et donc je voulais demander si quelqu'un ici qui est mieux dans ce que moi pouvait me montrer un exemple pour,

  • Récupération d'une poignée de processus son PID requis pour le terminer, puis appeler TerminateProcess avec lui.

Si vous n'êtes pas familier avec C++, un équivalent C# aiderait aussi.

+0

Êtes-vous simplement à la recherche de cette fonction WINAPI OpenProcess http://msdn.microsoft.com/en-us/library/ms684320%28VS.85%29.aspx? Mettre ceci ensemble avec TerminateProcess ne devrait pas être trop difficile. –

+0

Non, je veux mettre fin à un processus en cours. C'est pourquoi j'ai mentionné que je dois d'abord récupérer le PID. – jemper

+1

Quand quelqu'un vous donne un lien, lisez-le. Ne supposez pas simplement du nom ce qu'il fait. En fait, OpenProcess crée un handle de processus, donné un PID, ce qui est exactement ce que vous avez demandé. @Charles: Cela devrait être une réponse à la place d'un commentaire. –

Répondre

14

Pour répondre à la question initiale, afin de récupérer une poignée de processus par son PID et appelez TerminateProcess, vous avez besoin d'un code comme le suivant:

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; 
} 

Gardez à l'esprit que TerminateProcess ne permet pas son objectif de nettoyer et sortir dans un état valide. Réfléchissez à deux fois avant de l'utiliser.

+0

Comment puis-je obtenir le PID du processus? – BlackBear

+0

Quel type d'identifiant avez-vous pour le processus pour lequel vous voulez un PID? –

+0

Seul son nom (de taskmanager) – BlackBear