Ads 468x60px

Smaller time frame always follow the bigger time frame. It's better wait be patience to enter in position than risk with BIG SL. Having strong trading discipline and taking losses when necessary is a sign of serious trading approach
Subscribe:

Labels

Friday, April 27, 2012

Making Task Manager

Sambil menyelam minum air, istilah itu cukup tepat untuk saya yang masih belajar dasar pemrograman dengan menggunakan Delphi 7. Karena pada kali ini saya akan mencoba membuat task manager dengan delphi. Sebelum tahap pembuatan kita akan menjelaskan sedikit algoritma yang saya gunakan.
Algoritmanya begini, saat software berjalan akan langsung memeriksa PID Value suatu program yang bekerja, keuntungan dengan menggunakan PID adalah kita bisa mengkill suatu virus yang selalu berganti nama. Setelah PID value diperiksa selanjutnya kita menggunkan Previllage Administrator agar dapat mengkill program tersebut.
Cukup segitu ja yah?susah jelasinnya, soalnya q juga lum paham.hehe Berikutnya kita langsung praktekan yah, ikuti langkah berikut:

  • 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
Oke, cukup sekian dulu yah??Mudah-mudahan bermanfaat.
NB: Source program, Program jadi dapat di download disini dan disini.

comments