|
Débuté par Eric DETREZ, 12 oct. 2006 19:08 - 2 réponses |
| |
| | | |
|
| |
Posté le 12 octobre 2006 - 19:08 |
Comment faire pour killer un processus dont on connait le nom ?
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Posté le 12 octobre 2006 - 19:33 |
exetermine()
Eric DETREZ a émis l'idée suivante :
Comment faire pour killer un processus dont on connait le nom ?
Merci d'avance
-- Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile. S'il n'était pas difficile, ce ne serait pas un problème. " |
| |
| |
| | | |
|
| | |
| |
Posté le 12 octobre 2006 - 19:34 |
Bonjour, y-a peut-être plus simple mais çà fonctionne chez moi sur XPpro-SP2 (j'suis admin...) tiens moi au courrant A+
//*************************** constante kernel32_dll = "kernel32.dll" TH32CS_SNAPALL = 0x0000001F // Includes all processes and threads in the system, // plus the heaps and modules of the process specified // in th32ProcessID. Equivalent to specifying the // TH32CS_SNAPHEAPLIST, TH32CS_SNAPMODULE, TH32CS_SNAPPROCESS, // and TH32CS_SNAPTHREAD values.
end
//*************************** _PROCESSENTRY32 est une structure dwSize est un entier cntUsage est un entier // This member is no longer used and is always set to zero. th32ProcessID est un entier // Process identifier. th32DefaultHeapID est un entier sans signe // This member is no longer used and is always set to zero. th32ModuleID est un entier // This member is no longer used and is always set to zero. cntThreads est un entier // Number of execution threads started by the process. th32ParentProcessID est un entier // Process identifier of the process that created this process (its parent process). pcPriClassBase est un entier // Base priority of any threads created by this process. dwFlags est un entier // This member is no longer used and is always set to zero. szExeFile est une chaîne fixe sur 260 // Pointer to a null-terminated string that specifies the name of the executable file for the process. END
//*************************** PROCEDURE KillProcesses(pProcessesName) RetApi est un booléen PID, hProcesses sont des entiers ProcessesName, ProcessesListe, Ligne sont des chaînes ProcessesName = Majuscule(SansEspace(pProcessesName))
ProcessesListe = EnumProcesses() IF ProcessesListe = "" THEN RENVOYER -2 // EnumProcesses Fail
Ligne = ExtraitChaîne(ProcessesListe,rangPremier,CRLF) WHILE Ligne <> EOT IF Majuscule(SansEspace(ExtraitChaîne(Ligne,1))) = ProcessesName THEN SORTIR Ligne = ExtraitChaîne(ProcessesListe,rangSuivant,CRLF) END IF Ligne = EOT THEN RENVOYER -1 // Processes Not Found
PID = Val(ExtraitChaîne(Ligne,2))
hProcesses = API(kernel32_dll, "OpenProcess", 0x00010001, True, PID) IF hProcesses <> - 1 THEN RetApi = API( kernel32_dll, "TerminateProcess", hProcesses, 0) API(kernel32_dll, "CloseHandle", hProcesses) IF RetApi THEN RENVOYER 0 ELSE RENVOYER -4 END RENVOYER -3
//*************************** // Renvoie si tout va bien une chaine comportant n lignes séparateur CRLF // Chaque ligne est composée de champs séparés par TAB // 1° Nom du processus // 2° PID du processus // 3° PID du processus parent // 4° Nombre de thread lancé par le processus // // Permet de faire un tableau type celui du fameux CTRL+ALT+DEL "Gestionnaire des tâches" // Remarque : le premier processus portant le nom de "[System Process]" avec PID=0 // semble etre identifié comme les "Processus inactif du système" // // voir les pages // http://msdn.microsoft.com/library/default.asp… // http://msdn.microsoft.com/library/default.asp… // http://msdn.microsoft.com/library/default.asp… // http://msdn.microsoft.com/library/default.asp… // FUNCTION EnumProcesses()
retAPI est un entier sans signe = 0 pHANDLE est un entier = 0 lppe est une _PROCESSENTRY32 ProcessesList est une chaîne = ""
pHANDLE = API( kernel32_dll, "CreateToolhelp32Snapshot", TH32CS_SNAPALL, 0x0) IF pHANDLE <> -1 THEN lppe:dwSize = 296 // Taille de la structure lppe lppe:szExeFile = "" IF API(kernel32_dll, "Process32First", pHANDLE, &lppe) THEN ProcessesList = lppe:szExeFile[[1 A Position(lppe:szExeFile,Caract(0x0))-1]] + TAB +... NumériqueVersChaine(lppe:th32ProcessID) + TAB +... NumériqueVersChaine(lppe:th32ParentProcessID) + TAB +... NumériqueVersChaine(lppe:cntThreads)+CRLF lppe:szExeFile = "" WHILE API(kernel32_dll, "Process32Next", pHANDLE, &lppe) ProcessesList += lppe:szExeFile[[1 A Position(lppe:szExeFile,Caract(0x0))-1]] + TAB +... NumériqueVersChaine(lppe:th32ProcessID) + TAB +... NumériqueVersChaine(lppe:th32ParentProcessID) + TAB +... NumériqueVersChaine(lppe:cntThreads)+CRLF lppe:szExeFile = "" END END API(kernel32_dll, "CloseHandle", pHANDLE) END RENVOYER ProcessesList
"Eric DETREZ" <eric.detrez@ch-aubenas.fr> a écrit dans le message de news: 452e598c$1@news.pcsoft.fr...
Comment faire pour killer un processus dont on connait le nom ?
Merci d'avance
|
| |
| |
| | | |
|
| | | | |
| | |
|