Kambuh lagi belajar pemrograman sistem setelah ada tantangan diminggu ini untuk membuat image processing dengan algoritma huffman.
Delphi telah menyediakan function untuk mematikan proses yang sedang berjalan di sistem window yaitu TerminateProcess . Dengan pola penulisan :
TerminateProcess( param1, param2)
Ket :
param1 : proses yang sedang terbuka ( dijalankan )
param2 : kode identitas proses
Sebelum mentarget proses apa yang akan dimatikan, tentunya kita harus mengetahui proses yang sedang berjalan, maka gunakan function
PProcessEntry32 , yang disediakan delphi. ( Delphi memang baik hati 🙂 ).
Semua process yang terbuka , saya visualkan dalam komponen listview, dengan kode seperti dibawah ini :
procedure TfProcess.ShowList;
var I : Integer;
PE : TProcessEntry32;
HAppIcon: HICON;
begin
SendMessage(ListView1.Handle, WM_SETREDRAW, Integer(False), 0);
ListView1.Items.Clear;
for i:=0 to FProcList.Count-1 do
begin
PE:=PProcessEntry32(FProcList.Items[I])^;
HAppIcon:=ExtractIcon(HInstance, PE.szExeFile, 0);
if HAppIcon=0 then HAppIcon:=LoadIcon(0, IDI_WINLOGO);
with ListView1.Items.Add do
begin
Caption :=PE.szExeFile;
Data :=FProcList.Items[I];
SubItems.Add(IntToStr(PE.cntThreads));
SubItems.Add('$'+IntToHex(PE.th32ProcessID,8));
SubItems.Add('$'+IntToHex(PE.th32ParentProcessID,8));
SubItems.Add(IntToStr(PE.pcPriClassBase));
ImageIndex:=ImageList_AddIcon(ImageList1.Handle, HAppIcon);
end;
end;
SendMessage(ListView1.Handle, WM_SETREDRAW, Integer(True), 0);
InvalidateRect(ListView1.Handle, nil,False);
end;
Kemudian kode dengan menggunakan event onclick pada tombol untuk mematikan proses, sebagai berikut :
procedure TfProcess.Button2Click(Sender: TObject);
var Ret: BOOL;
PrID: integer; //process identifier
Ph: THandle; //process handle
begin
If ListView1.ItemIndex < 0 Then Exit;
if Tanya('matikan proses '+ListView1.Items.Item[ListView1.ItemIndex].Caption) then
begin
with ListView1 do
begin
PrID :=StrToInt(ItemFocused.SubItems[1]);
Ph :=OpenProcess(1, BOOL(0), PrID);
Ret :=TerminateProcess(Ph, 0);
Refresh;
if Integer(Ret) = 0 then
begin
MessageDlg('Tidak bisa ditutup ' + ItemFocused.Caption, mtError, [mbCancel], 0);
FormShow(Self);
end
else
begin
ItemFocused.Delete;
FormShow(Self);
end;
end;
end;
end;
Ehmmm….kok mirip task managernya window ???? trus apa bedanya ? …mungkin timbul pertanyaan ini. bedanya, ini mbuat sendiri dan open source kalo task manager ga open source :D.
Tertarik mencoba ? download aplikasinya disini
Tertarik mengembangkan ? download sourcodenya disini
Tidak tertarik ???? ….ya sudah ga pa2 :D.
Aplikasi ini bisa dikembangkan untuk hal-hal positif, seperti pembatasan pemakaian aplikasi pada sebuah jaringan. Tapi juga bisa disalah gunakan untuk hal-hal negatif, seperti membuat virus yang berbahaya (dosa tanggung sendiri) :D.
Notes :
– Aplikasi source code ini menggunakan vcl skin nextsuite dan tray icon
Semoga bermanfaat…..