www.domaci.de Forum Indeks Home
Portal • Forum • Novi upisi • Pretraga • Link do nas • Domaći filmovi • Lista korisnika • Tim sajta • Proverite privatne poruke • Prijava • Registracija
Pravilnik • FAQ • Profil • Favorites • Galerija slika • Top lista • Download MP3 • MP3 razno • Spotovi • Noviteti 2013 • Muzički noviteti 2014

Delphi: Ubijanje procesa!!!
Upišite novu temu   Odgovorite na temu    www.domaci.de Forum Indeks -> ~ Programiranje ~
::  
Autor Poruka
Doktor
~Sanjicino*slculence~
~Sanjicino*slculence~



Godine: 38

Datum registracije: 17 Nov 2005
Poruke: 4264
Mesto: Novi Sad

blank.gif
PorukaPostavljena: Pon Jan 30, 2006 12:05 am    Naslov poruke: Delphi: Ubijanje procesa!!! Na vrh strane Na dno strane

Ovde imate kod za rad sa procesima i taskovima (zadacima) u Windowsu. Ove rutine se koriste za gašenje nekog procesa ili zadatka. Ovaj “ritual” mi nazivamo ubijanje procesa a gašenjem nekog zadatka automatski se briše i njegova referenca u proces listi i vrši se njegovo uklanjanje iz sistemske memorije.

Primer koristi biblioteku TLHelp32 koju morate dodati…

Code:

{Za Windows 9x/ME/2000/XP }

uses
  Tlhelp32;

function KillTask(ExeFileName: string): Integer;
const
  PROCESS_TERMINATE = $0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  Result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(
                        OpenProcess(PROCESS_TERMINATE,
                                    BOOL(0),
                                    FProcessEntry32.th32ProcessID),
                                    0));
     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  KillTask('notepad.exe');
end;

{ Za Windows NT/2000/XP }

procedure KillProcess(hWindowHandle: HWND);
var
  hprocessID: INTEGER;
  processHandle: THandle;
  DWResult: DWORD;
begin
  SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0,
    SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);

  if isWindow(hWindowHandle) then
  begin
    // PostMessage(hWindowHandle, WM_QUIT, 0, 0);

    // dobijanje identifikatora procesa u Windowsu
    GetWindowThreadProcessID(hWindowHandle, @hprocessID);
    if hprocessID <> 0 then
    begin
      // Otkrivanje hendla procesa
      processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,
        False, hprocessID);
      if processHandle <> 0 then
      begin
        // Ubijanje procesa
        TerminateProcess(processHandle, 0);
        CloseHandle(ProcessHandle);
      end;
    end;
  end;
end;

// primer korišćenja…
procedure TForm1.Button2Click(Sender: TObject);
begin
  KillProcess(FindWindow('notepad',nil));
end;



_________________
~*~Vojim svoje srculence najvise na svetu ~*~ :322:

 
Prikaz poruka:   
Upišite novu temu   Odgovorite na temu    www.domaci.de Forum Indeks -> ~ Programiranje ~ -> Delphi: Ubijanje procesa!!! Vreme je podešeno za GMT + 1 sat
Strana 1 od 1

 
Pređite u:  
Vi ne možete otvarati nove teme u ovom forumu
Vi ne možete odgovarati na teme u ovom forumu
Vi ne možete menjati Vaše poruke u ovom forumu
Vi ne možete brisati Vaše poruke u ovom forumu
Vi ne možete glasati u anketama u ovom forumu
Vi ne možete postavljati fajlove u ovom forumu
Vi ne možete preuzeti fajlove sa ovog foruma





- Burek Forum - Doček Nove 2018. godine - Venčanja, svadbe - Proslave - TipoTravel - Kuda večeras - Anwalt - legal -

Bookmark to: Twitter Bookmark to: Facebook Bookmark to: Digg Bookmark to: Del.icio.us Bookmark to: StumbleUpon