Mematikan proses yang sedang berjalan di Window OS

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😀.

Tertarik mencoba ? download aplikasinya disini

Tertarik mengembangkan ? download sourcodenya disini

Tidak tertarik ???? ….ya sudah ga pa2😀.

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)😀.

Notes :
– Aplikasi source code ini menggunakan vcl skin nextsuite dan tray icon

Semoga bermanfaat…..

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: