Friday, 16 January 2015

DELPHI7 :: Cara membuat Task manager dengan Delphi7


  • Buka Program delphi 7 Anda.
  • Tambahkan komponen Listview (pada tab Win32) dan 3 Button  (Tab Standart) untuk Button close, refresh dan kill.
  • Selanjutnya Buat tampilan seperti berikut :
Task manager
Tampilan Blue Print Program task manager
  • Oke, tahap selanjutnya beri nama masing-masing Button dengan Caption : Refresh, Kill Prosess dan Cancel.
  • Sekarang tekan tombol F12 untuk masuk ke Jendela Source.
  • Nah sebelum menulis program, tambahkan “tlhelp32″ pada uses dan tambahkan variabel global “lvi:TListitem;”
  • Ketikan source berikut setelah Implementation.
 Procedure TForm1.TutupProsesID(ID:THandle);
//Disini kode untuk menututu proses
procedure TerminateProcessById(AID: Cardinal);
var
HndProcess,ExCode : THandle;
begin
//Baca Proses ID-nya
HndProcess := OpenProcess(PROCESS_ALL_ACCESS,True,AID);
GetExitCodeProcess(HndProcess,ExCode); {Dapatkan kode untuk menutupnya}
TerminateProcess(HndProcess,ExCode) {Tutup prosess sekarang..!};
CloseHandle(HndProcess); {Fresh Memory}
end;
{
Nah ini kode untuk dapat mengakses proses service yang biasanya tidak bisa
di terminate dengan kode biasa, untuk itu diperlukan kode tambahan
berikut kodenya :
}
function SetPrivilege(aPrivilegeName: string; aEnabled: boolean): boolean;
var
TP : TTokenPrivileges;
TPPrev : TTokenPrivileges;
Token : THandle;
dwRetLen : DWord;
begin
Result := False; //Nilai default
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token);
TP.PrivilegeCount := 1;
if (LookupPrivilegeValue(nil, PChar(aPrivilegeName), TP.Privileges[0].LUID)) then begin
if (aEnabled) then
TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
TP.Privileges[0].Attributes := 0;
dwRetLen := 0;
Result := AdjustTokenPrivileges(Token, False, TP, SizeOf(TPPrev), TPPrev, dwRetLen);
end;
CloseHandle(Token);
end;

function KillProcessByPID(pid: cardinal): boolean;
var
hProc : THandle;
begin
Result := False;
//Untuk mematikan proses dibutuhkan kode privilege
if not SetPrivilege('SeDebugPrivilege', True) then exit;
hProc := OpenProcess(STANDARD_RIGHTS_REQUIRED or PROCESS_TERMINATE, False, pid);
try
if hProc > 0 then begin
Result := TerminateProcess(hProc, 1);
end;
finally
CloseHandle(hProc);
SetPrivilege('SeDebugPrivilege', False);
end;
end;

Begin
KillProcessByPID(ID); //Tutup proses ID sekarang juga...!
End;

//Baca Semua proses di sini..
procedure TForm1.BacaProses;
var
hSnap:Cardinal;
pe32:TProcessEntry32;
s:String;
begin
//Buat dahulu snapshootnya di mulai dari proses desktop
hsnap:=CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);
if hSnap = INVALID_HANDLE_VALUE then
exit;
FillChar(pe32, sizeof(pe32),0);
pe32.dwSize:=Sizeof(pe32);
if not Process32First(hsnap, pe32) then
exit;
ListView1.Clear; //hapus seluruh list
//tambahkan seluruh list dengan nama dan PID proses..
repeat
lvi:=ListView1.Items.Add;
s:=IntToStr(pe32.th32ProcessID);
lvi.caption := pe32.szExeFile;
lvi.subitems.Add(s);
until not Process32Next(hsnap, pe32);
CloseHandle(hSnap);
end;
  • Lanjut… Klik 2 x pada Button refresh dan ketikan : Bacaproses;
  • Sama seperti diatas klik 2 x pada button Kill Prosess dan ketikan berikut :
try if Application.MessageBox('Yakin akan menutup program?'+#13+'Kemungkinan anda akan kehilangan data saat kill program ini.','::: Warning !!! :::', MB_YESNO or MB_ICONHAND)
=mryes then
begin
TutupProsesID(strtoint(listview1.Selected.SubItems[0]));
Form2.Refresh;
end;
except
if Application.MessageBox('Upss!!! Silahkan pilih program terlebih dahulu.','::: Warning !!! :::', MB_RETRYCANCEL)
=mrRetry then
begin
ListView1.ItemFocused;
end
else
FormShow(sender);
end;
  • Sekarang Cek program dengan menekan CTRKL + F9, jika error silahkan periksa kembali.
  • Sekarang coba Running Program dengan tombol F9, maka akan tampak seperti berikut :
Alternate Killer
Program setelah di Running


Read more: http://burhanudin.web.id/programing/membuat-task-manager-dengan-delphi-7#ixzz3P8SY0re8

No comments:

Post a Comment