Cette unité est un petit utilitaire a ajouter a votre programme.
Elle permet de supprimer ou de denombrer
-les processus windows en indiquant leur nom ou une partie de leur nom.
-les fenetres des navigateurs Web par leur nom ou une partie de leur nom.
Note : par defaut seul les pages sont detruites
utiliser le setter :
WindowsList.setWebWindowOnly(webw :boolean);
pour detruire tout processus contenant le nom indiqué.
Exemple
------------
killWindows('yahoo');
detruira toutes les fenetres du navigateur contenant yahoo dans le titre de sa fenetre.
Source / Exemple :
unit ListWindows;
interface
uses Windows, SysUtils, Classes,Controls, Forms, StdCtrls,Dialogs;
type
PHWND = ^HWND;
WindowsList=object
private
public
constructor killerInstinct();
function getNumWindows(windowstile :String) :integer ;
function killWindows(windowstile :String) :integer ;
procedure setWebWindowOnly(webw :boolean);
end;
var
countwindows :integer;
windowsname : String;
kill,webonly :boolean;
implementation
//Fonction de recuperation des fenetres.
function EnumWndProc (Hwnd: THandle; FoundWnd: PHWND): Bool; export; stdcall;
var
bContinue :boolean;
ClassName,buffer: string;
Ph: Integer;//DWORD;
Ret: BOOL;
PrID: Integer;
HandleProcess:THandle;
begin
SetLength (ClassName, 100);
SetLength (buffer, GetWindowTextLength(hWnd));
GetClassName (Hwnd, PChar (ClassName), Length (ClassName));
ClassName := PChar (ClassName);
GetWindowText(hWnd,PChar(buffer),200);
if ((windowsname='') or (Pos(windowsname,PChar(buffer))>0)) and ((not webonly) or ((ClassName ='IEFrame')or (ClassName ='MozillaWindowClass') )) then
begin
countwindows:= countwindows+1;
if kill then
begin
//on recupere ID du process
GetWindowThreadProcessId(hWnd,@Ph);
if Ph<>0 then
begin
HandleProcess:=OpenProcess(PROCESS_TERMINATE,False,Ph);
TerminateProcess(HandleProcess,0);
end;
end;
end;
EnumWndProc := True;
end;
constructor WindowsList.killerInstinct();
begin
webonly:=true;
end;
function WindowsList.getNumWindows(windowstile :String) :integer ;
begin
kill:=false;
countwindows:=0;
windowsname:=windowstile;
EnumWindows (@EnumWndProc, 0);
result:= countwindows;
end;
function WindowsList.killWindows(windowstile :String) :integer ;
begin
kill:=true;
countwindows:=0;
windowsname:=windowstile;
EnumWindows (@EnumWndProc, 0);
result:= countwindows;
end;
//Si true le calcul des fenetres ou la suppression des fentres ne prend en compte
//que les fenetres des navigateurs Web (IE et Mozilla).
procedure WindowsList.setWebWindowOnly(webw :boolean);
begin
webonly:=webw;
end;
end.
Conclusion :
Merci de m'indiquer les ameliorations a apporter a ce petit code. :)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.