cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 9 sept. 2008 à 13:34
Salut,
Tu utilises CreateToolHelp32Snapshot, enchaîné avec des Process32First/Next ?
Si oui, quand tu trouves un processus suspect, tu peux par exemple utiliser ShowModal à la place de Show pour afficher la deuxième form.
Voilà le code, mais en Delphi, je n'ai pas C++ Builder ici. Mais Delphi et C++ Builder utilisent la même librairie pour les fenêtre : la VCL.
<hr />procedure TForm1.Button1Click(Sender: TObject);
var
hProcessSnap: THandle; // Handle du snapshot
pe32: PROCESSENTRY32; // Informations sur un processus
frm2: TForm2;
begin
frm2:= TForm2.Create(self);
Memo1.Clear;
// Pris du snapshot
hProcessSnap:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if hProcessSnap = INVALID_HANDLE_VALUE then
begin
ShowMessage('Echec du snapshot');
Exit;
end;
// Affectation de la taille de la structure avant utilisation
pe32.dwSize:= SizeOf(PROCESSENTRY32);
// Récupération des infos sur le premier processus
if not Process32First(hProcessSnap, pe32) then
begin
ShowMessage('Echec de la récupération du premier processus');
CloseHandle(hProcessSnap);
Exit;
end;
// On boucle sur les processus
repeat
// Affichage du nom de l'exe sur la form
Memo1.Lines.Add(pe32.szExeFile);
// Recherche de notepad
if pe32.szExeFile = 'notepad.exe' then
begin
ShowMessage('Virus détecté');
frm2.Caption:= 'Virus ' + pe32.szExeFile + ' détecté';
frm2.ShowModal;
ShowMessage('Reprise du scan');
end;
until not Process32Next(hProcessSnap, pe32);