Salut,
Post sur le même sujet apparement :
http://www.csharpfr.com/infomsg_API-HOOK-OPENPROCESS_632310.aspx
Des anti-cheat télé
ici.
Voici un code en Delphi qui localise un processus par son nom et essaie de l'arrête :
procedure TfrmMain.btnKillNotepadClick(Sender: TObject);
var
//Info sur un processus
uProcessInfo: TProcessEntry32;
hHandle: THandle;
begin
//Il faut indiqué la taille de la structure dans la structure avant de l'utiliser
uProcessInfo.dwSize:= SizeOf(TProcessEntry32);
//Création d'un snapshot des processus en cours d'excution
hHandle:= CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
//Récupéation des infos du premier processus snapshoté
Process32First(hHandle, uProcessInfo);
//On boucle sur les processus
repeat
//Si c'est notre homme
if CompareText(uProcessInfo.szExeFile, 'notepad.exe') = 0 then
begin
//On demande un handle permettant de le supprimer
hHandle:= OpenProcess(PROCESS_ALL_ACCESS, False, uProcessInfo.th32ProcessID);
//On lui dit chut, avec le code d'erreur 0
TerminateProcess(hHandle, 0);
Break;
end;
until not Process32Next(hHandle, uProcessInfo);
end;
C'est plus facile que le hook, faisable en VB6, mais c'est moins propre.
(Et je sens que BruNews vat me frapper sauvagement pour fuite de mémoire par rapport au snapshot !)