delphide çalışan exeyi nasıl kapatabilirim.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
tsamim
Üye
Mesajlar: 76
Kayıt: 19 Ağu 2004 03:08
Konum: izmir

delphide çalışan exeyi nasıl kapatabilirim.

Mesaj gönderen tsamim »

Delphide çalışan bir baska prog. kapatma imkanım varmı acaba. Hepinize kolay gelsin.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

Var

processkiller diye bir program vardı onu incelersen kodunda vardır. program delphi ile yazılmış ve free bir programdır
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

Kod: Tümünü seç

function KillApp(const sCapt: PChar) : boolean;
  var AppHandle:THandle;
begin
  AppHandle:=FindWindow(Nil, sCapt) ;
  Result:=PostMessage(AppHandle, WM_QUIT, 0, 0) ;
end;
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Kod: Tümünü seç

uses
  Windows, TlHelp32, SysUtils;

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;//KillTask
Kolay gelsin..
Kullanıcı avatarı
tanerileri
Üye
Mesajlar: 55
Kayıt: 06 Tem 2007 11:30

benim kullandığım 2 prosedür var.

Mesaj gönderen tanerileri »

ikincisi zaten yukarda verilmiş ama , yanında yazdığım not için ekledim buraya.

procedure ProgramKapat(Pencere: string);
const
PROCESS_TERMINATE = $0001;
var
Hnd: THandle;
No: Integer;
OPencere: HWND;
begin
OPencere := FindWindow(nil, Pchar(Pencere));
GetWindowThreadProcessID(OPencere, @No);
Hnd := OpenProcess(PROCESS_TERMINATE, FALSE, No);
TerminateProcess(Hnd, 4);
end;

procedure KillApp(const sCapt: PChar); // ProgramKapatla aynı ama , Trayde varsa, onuda tazeliyor.
var AppHandle: THandle;
begin
AppHandle := FindWindow(nil, sCapt);
PostMessage(AppHandle, WM_DESTROY, 0, 0);
end;
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

ulu coder yazdı:

Kod: Tümünü seç

uses
  Windows, TlHelp32, SysUtils;

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;//KillTask
Kolay gelsin..
bu kod 98 ve xp arasında farklı çalışıyordu benim projemde... xp için özellikle dikkat derim.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Cevapla