Berikut adalah contoh sederhana untuk memeriksa file Exe apa saja yang sedang berjalan dalam komputer ...
1. Buat Project Baru
2. Tambahkan beberapa komponen, diantaranya
- Button1 dengan Caption 'Cek Notepad'
- Button2 dengan Caption 'Daftar Exe sedang Running'
- ListBox1
3. Buatlah 2 buah procedure yaitu (CreateWin9xProcessList,CreateWinNTProcessList,GetProcessList) dan satu buah Fungsi yaitu ( EXE_Running)
code lengkapnya seperti ini ...
Jika sistem Operasi anda adalah Win9x maka procedure berikut yang akan di panggil ....
procedure CreateWin9xProcessList(List : TStringList) ;
var
hSnapShot : THandle;
ProcInfo : TProcessEntry32;
begin
if List = nil then Exit ;
hSnapShot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapShot <> THandle(-1)) then
begin
ProcInfo.dwSize := sizeof(ProcInfo) ;
if (Process32First(hSnapshot, ProcInfo)) then
begin
List.Add( ProcInfo.szExeFile) ;
while (Process32Next(hSnapShot, ProcInfo)) do
List.Add(ProcInfo.szExeFile) ;
end ;
CloseHandle(hSnapShot) ;
end ;
end ;
Jika sistem Operasi anda adalah WinNT,2000,XP,Vista maka procedure berikut yang akan di panggil ....
procedure CreateWinNTProcessList(List : TStringList) ;
var
PIDArray : array [0..1023] of DWORD ;
cb : DWORD ;
I : integer ;
ProcCount : integer ;
hMod : HMODULE ;
hProcess : THandle ;
ModuleName : array [0..300] of char ;
begin
if List = nil then Exit ;
EnumProcesses(@PIDArray, sizeof(PIDArray), cb) ;
ProcCount := cb div sizeof(DWORD) ;
for I := 0 to ProcCount-1 do
begin
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or
PROCESS_VM_READ,
false,
PIDArray[I]) ;
if (hProcess <> 0) then
begin
EnumProcessModules(hProcess, @hMod, sizeof(hMod), cb) ;
GetModuleFilenameEx(hProcess,hMod,ModuleName,sizeof(ModuleName));
List.Add(ModuleName);
CloseHandle(hProcess);
end;
end;
end;
procedure GetProcessList(Var List : TStringList) ;
var ovi : TOSVersionInfo ;
begin
if List = nil then Exit ;
ovi.dwOSVersionInfoSize := sizeof(TOSVersionInfo) ;
GetVersionEx(ovi) ;
case ovi.dwPlatformId of
VER_PLATFORM_WIN32_WINDOWS : CreateWin9xProcessList(List) ;
VER_PLATFORM_WIN32_NT : CreateWinNTProcessList(List) ;
end
end;
function EXE_Running(FileName : String; fullpath : boolean) : boolean;
var
i : integer ;
MyProcList : TStringList;
begin
MyProcList := TStringList.Create;
try
GetProcessList(MyProcList) ;
result := false;
if MyProcList = nil then Exit;
for i := 0 to MyProcList.Count - 1 do
begin
if not fullpath then
begin
if CompareText(ExtractFileName(MyProcList.Strings[i]),FileName) = 0 then result := true
end else
if CompareText(MyProcList.Strings[i],FileName) = 0 then result := true;
if result then break;
end;
finally
MyProcList.Free ;
end;
end;
4. Pada even OnClick milik Button1 masukan Code berikut :
// Misal akan mengecek apakah Program Notepad sedang di jalankan ..... if EXE_Running('notepad.exe',false) then ShowMessage('Notepad is running') else ShowMessage('Notepad is not running');
5. Pada even OnClick milik Button2 masukan Code berikut :
// mengecek semua program EXE yang sedang di jalankan .....
var i : integer ; MyProcList : TStringList; begin MyProcList := TStringList.Create; try GetProcessList(MyProcList) ; if MyProcList = nil then Exit; ListBox1.Clear; for i := 0 to MyProcList.Count - 1 do ListBox1.items.add(MyProcList.Strings[i]); finally MyProcList.Free; end;
dan hasilnya adalah ...
