OVH Cloud OVH Cloud

Détruire un process sous NT (idem Kill -9)

4 réponses
Avatar
Gislain ROCHE
Bonjour,

Je cherche à détruire un process en mémoire d'après son nom. Comment faire
en VB 6 ?

Merci d'avance.

4 réponses

Avatar
Fabrice MALAINGRE
Bonjour Gislain,

Voici la marche à suivre pour détruire un processus sous Windows :

1) Enumérer les processus du système par la fonction "EnumProcesses" qui te
renvoie un tableau d'IDs ;

2) Ouvrir chaque processus par la fonction "OpenProcess" qui prend un ID en
paramètre et retourne le HANDLE du processus désigné ;

3) Obtenir le nom du fichier exécutable correspondant à ce processus grâce à
des appels successifs à "EnumProcessModules" et "GetModuleFileNameEx".

4) Comparer le nom avec celui recherché, puis faire "TerminateProcess" avec
comme paramètre le HANDLE du processus à détruire.

Mais attention, "assassiner" un processus de cette manière à un effet de
bord non négligeable : le processus "victime" du "TerminateProcess" ne
prévient pas les DLL qu'il a chargés de l'arrêt du processus (i.e. le
DllMain avec pour argument DLL_PROCESS_DETACH n'est pas invoqué). Cela
signifie que certaines ressources allouées par ces DLL ne seront jamais
libérées !

Donc, si le processus à terminer est une application fenêtrée, il est
préférable de lui envoyer un simple message "WM_QUIT".

Voilà

Cordialement

____________________________
Fabrice MALAINGRE
Architecte Logiciel - Chef de Projet
THEORIS - www.theoris.fr
Avatar
Microsoft
Bonjour,

Vous trouverez dans cet article de la base de connaissance une réponse à
votre question.
HOWTO: Programmatically Close a Single Instance of a Windows-Based Program
http://support.microsoft.com/default.aspx?scid=kb;EN-US;176391

Cdt,
Jamal Ichou

"Gislain ROCHE" a écrit dans le message de
news:
Bonjour,

Je cherche à détruire un process en mémoire d'après son nom. Comment faire
en VB 6 ?

Merci d'avance.




Avatar
Gislain ROCHE
Merci à tous.

G. ROCHE


"Gislain ROCHE" a écrit dans le message de
news:
Bonjour,

Je cherche à détruire un process en mémoire d'après son nom. Comment faire
en VB 6 ?

Merci d'avance.




Avatar
François Picalausa
"Gislain ROCHE" a écrit dans le message de
news:
Merci à tous.

"Gislain ROCHE" a écrit dans le message de
news:
Je cherche à détruire un process en mémoire d'après son nom. Comment
faire en VB 6 ?





Bonjour/soir,

Pour compléter, l'article suviant présente la méthode à suivre entièrement:
How to kill an app gently
http://msdn.microsoft.com/library/en-us/dnvsm01/html/dt0109.asp

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com