Processus
Qu'est-ce qu'un processus ? Tandis que le mot "programme" se réfère au code exécutable (le fichier .exe, par exemple),
un processus est un programme qui est exécuté. Quand vous lancez un programme sous Windows, l'exécutable est chargé
en mémoire et Windows l'inscrit dans sa liste interne de processus et s'assure qu’il reçoit bien du temps processeur
et de la mémoire, tout comme pour les autres applications. Un processus peut alors demander autant de ressources
qu'il y en a de disponibles, Windows tenant en effet à jour en temps réel l’utilisation des différentes ressources.
Aussitôt qu'un processus est terminé, toutes les ressources utilisées par ce processus sont libérées et sont alors
redistribuées à d'autres qui les demandent. Plus...
Code Source
unit WinUnit;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,Buttons,
StdCtrls,TLHelp32;
type
TWinForm=class(TForm)
ListApp:TListBox;
SpeedButton2:TSpeedButton;
SpeedButton3:TSpeedButton;
SpeedButton4:TSpeedButton;
Edit1:TEdit;
SpeedButton1: TSpeedButton;
procedure FormCreate(Sender:TObject);
procedure ListAppClick(Sender:TObject);
procedure SpeedButton2Click(Sender:TObject);
procedure SpeedButton3Click(Sender:TObject);
procedure SpeedButton4Click(Sender:TObject);
procedure SpeedButton1Click(Sender:TObject);
private
public
procedure GetWins;
end;
var
WinForm:TWinForm;
WindowList:TList;
implementation
{$R *.dfm}
/////////////////////
function GetModule(Hdl:HWND;ProcessID:Cardinal):ShortString;
var
ProcessEntry:TProcessEntry32;
Snap:Integer;
begin
Snap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
try ProcessEntry.dwSize:=SizeOf(ProcessEntry);
if(Process32First(Snap,ProcessEntry))then begin
repeat if ProcessEntry.th32ProcessID=ProcessID then begin
Result:=StrPas(ProcessEntry.szExeFile);
Break;
end;
until not(Process32Next(Snap,ProcessEntry));
end;
finally
Windows.CloseHandle(Snap);
end;
end;
function GetWindows(Handle:HWND;Info:Pointer):BOOL;stdcall;
begin
Result:=True;
WindowList.Add(Pointer(Handle));
end;
procedure TWinForm.GetWins;
var
TopWindow,CurrentWindow:HWND;
Dest:array[0..80] of char;
ClassName: array[0..80] of char;
i:Integer;
begin
try WindowList:=TList.Create;
TopWindow:=Handle;
EnumWindows(@GetWindows,Longint(@TopWindow));
CurrentWindow:=TopWindow;
for i:=0 to WindowList.Count-1 do begin
CurrentWindow:=GetNextWindow(CurrentWindow,GW_HWNDNEXT);
GetWindowText(CurrentWindow,Dest,sizeof(Dest)-1);
GetClassName(CurrentWindow,ClassName,sizeof(ClassName)-1);
if StrLen(Dest) > 0 then
ListApp.items.Add(ClassName);
end;
finally WindowList.Free;
end;
end;
/////////////////////
procedure TWinForm.FormCreate(Sender:TObject);
begin
GetWins;
end;
procedure TWinForm.ListAppClick(Sender:TObject);
var
i:integer;
begin
for i:=0 to ListApp.items.count-1 do
if ListApp.selected then edit1.text:=ListApp.items.strings;
end;
procedure TWinForm.SpeedButton2Click(Sender:TObject);
var
HWnd:integer;
begin
HWnd:=FindWindow(Pchar(Edit1.text),nil);
ShowWindow(HWnd,SW_HIDE);
end;
procedure TWinForm.SpeedButton3Click(Sender:TObject);
var
HWnd:integer;
begin
HWnd:=FindWindow(Pchar(Edit1.text),nil);
ShowWindow(HWnd,SW_SHOW);
end;
procedure TWinForm.SpeedButton4Click(Sender:TObject);
begin
ListApp.Clear;
GetWins;
end;
procedure TWinForm.SpeedButton1Click(Sender:TObject);
begin
Application.Terminate;
end;
end.
Executeur et Code
Qu'est-ce qu'un processus ? Tandis que le mot "programme" se réfère au code exécutable (le fichier .exe, par exemple),
un processus est un programme qui est exécuté. Quand vous lancez un programme sous Windows, l'exécutable est chargé
en mémoire et Windows l'inscrit dans sa liste interne de processus et s'assure qu’il reçoit bien du temps processeur
et de la mémoire, tout comme pour les autres applications. Un processus peut alors demander autant de ressources
qu'il y en a de disponibles, Windows tenant en effet à jour en temps réel l’utilisation des différentes ressources.
Aussitôt qu'un processus est terminé, toutes les ressources utilisées par ce processus sont libérées et sont alors
redistribuées à d'autres qui les demandent. Plus...
Code Source
unit WinUnit;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,Buttons,
StdCtrls,TLHelp32;
type
TWinForm=class(TForm)
ListApp:TListBox;
SpeedButton2:TSpeedButton;
SpeedButton3:TSpeedButton;
SpeedButton4:TSpeedButton;
Edit1:TEdit;
SpeedButton1: TSpeedButton;
procedure FormCreate(Sender:TObject);
procedure ListAppClick(Sender:TObject);
procedure SpeedButton2Click(Sender:TObject);
procedure SpeedButton3Click(Sender:TObject);
procedure SpeedButton4Click(Sender:TObject);
procedure SpeedButton1Click(Sender:TObject);
private
public
procedure GetWins;
end;
var
WinForm:TWinForm;
WindowList:TList;
implementation
{$R *.dfm}
/////////////////////
function GetModule(Hdl:HWND;ProcessID:Cardinal):ShortString;
var
ProcessEntry:TProcessEntry32;
Snap:Integer;
begin
Snap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
try ProcessEntry.dwSize:=SizeOf(ProcessEntry);
if(Process32First(Snap,ProcessEntry))then begin
repeat if ProcessEntry.th32ProcessID=ProcessID then begin
Result:=StrPas(ProcessEntry.szExeFile);
Break;
end;
until not(Process32Next(Snap,ProcessEntry));
end;
finally
Windows.CloseHandle(Snap);
end;
end;
function GetWindows(Handle:HWND;Info:Pointer):BOOL;stdcall;
begin
Result:=True;
WindowList.Add(Pointer(Handle));
end;
procedure TWinForm.GetWins;
var
TopWindow,CurrentWindow:HWND;
Dest:array[0..80] of char;
ClassName: array[0..80] of char;
i:Integer;
begin
try WindowList:=TList.Create;
TopWindow:=Handle;
EnumWindows(@GetWindows,Longint(@TopWindow));
CurrentWindow:=TopWindow;
for i:=0 to WindowList.Count-1 do begin
CurrentWindow:=GetNextWindow(CurrentWindow,GW_HWNDNEXT);
GetWindowText(CurrentWindow,Dest,sizeof(Dest)-1);
GetClassName(CurrentWindow,ClassName,sizeof(ClassName)-1);
if StrLen(Dest) > 0 then
ListApp.items.Add(ClassName);
end;
finally WindowList.Free;
end;
end;
/////////////////////
procedure TWinForm.FormCreate(Sender:TObject);
begin
GetWins;
end;
procedure TWinForm.ListAppClick(Sender:TObject);
var
i:integer;
begin
for i:=0 to ListApp.items.count-1 do
if ListApp.selected then edit1.text:=ListApp.items.strings;
end;
procedure TWinForm.SpeedButton2Click(Sender:TObject);
var
HWnd:integer;
begin
HWnd:=FindWindow(Pchar(Edit1.text),nil);
ShowWindow(HWnd,SW_HIDE);
end;
procedure TWinForm.SpeedButton3Click(Sender:TObject);
var
HWnd:integer;
begin
HWnd:=FindWindow(Pchar(Edit1.text),nil);
ShowWindow(HWnd,SW_SHOW);
end;
procedure TWinForm.SpeedButton4Click(Sender:TObject);
begin
ListApp.Clear;
GetWins;
end;
procedure TWinForm.SpeedButton1Click(Sender:TObject);
begin
Application.Terminate;
end;
end.
Executeur et Code













