Exe sonlandırmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
emozguner
Üye
Mesajlar: 11
Kayıt: 05 Oca 2008 12:30
Konum: Kocaeli

Exe sonlandırmak

Mesaj gönderen emozguner »

merhaba sorum su;
shellexecute ile actıgım bir dosyayı nasıl sonlandırırım. yardımlarınız icin simdiden tesekkurler
Kullanıcı avatarı
hacker_10-ur
Üye
Mesajlar: 27
Kayıt: 05 Oca 2008 10:05

Mesaj gönderen hacker_10-ur »

üsdat işine yarar diye düşünüyorum....(YANLIZ KODLARI DENEMEDİM...)

Kod: Tümünü seç

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;
DELPHI - C ++
PASCAL - TURBO C
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

ALT+F4 veya [X]'e basarak olabilir :twisted:
emozguner
Üye
Mesajlar: 11
Kayıt: 05 Oca 2008 12:30
Konum: Kocaeli

Mesaj gönderen emozguner »

hadi yaa gercekden mi diyorsun tavsiye olarak fisi cek demedigin ne kadar guzel... :lol:
hacker_10-ur kardesim kod icin saol canavar gibi calısıyor.ilk basda full path olmadı sonra exeyi programın bulundugu klasorden calsıtırrp denedim ve oldu.
KillTask('abc.exe'); yazmam yeterli oldu tesekkur ederim anlayısından ve cevabından dolayı
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

emozguner yazdı:hadi yaa gercekden mi diyorsun tavsiye olarak fisi cek demedigin ne kadar guzel... :lol:
hacker_10-ur kardesim kod icin saol canavar gibi calısıyor.ilk basda full path olmadı sonra exeyi programın bulundugu klasorden calsıtırrp denedim ve oldu.
KillTask('abc.exe'); yazmam yeterli oldu tesekkur ederim anlayısından ve cevabından dolayı

killtask kodu uygulamada açık olan verileri kaydetme şansı vermez :) dikatt et buna
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ı
hacker_10-ur
Üye
Mesajlar: 27
Kayıt: 05 Oca 2008 10:05

Mesaj gönderen hacker_10-ur »

önemli değil arkadaşım.... eğer açtığın programda veri kaydetmek istiyorsan programa tuş yollayabilirsin... şöyle

Kod: Tümünü seç

function SendKeys(ClassOrCaption:PChar;Keys:array of Integer):Boolean;
var
hW:HWND;
Ix:Integer;
begin
hW:=FindWindow(ClassOrCaption,nil);
if hW<=0 then hW:=FindWindow(nil,ClassOrCaption);
Result:=hW>0;
if Result then begin
Result:=SetForeGroundWindow(hW);
if not Result then Exit;
for Ix:=0 to High(Keys) do KeyBd_Event(Keys[Ix], 0, 0, 0);
for Ix:=High(Keys) downto 0 do Keybd_Event(Keys[Ix], 0, KEYEVENTF_KEYUP, 0);
end;
end;

örnek:
SendKeys('Hesap Makinesi', [VK_Menu, VK_F4]);
DELPHI - C ++
PASCAL - TURBO C
Kullanıcı avatarı
tanerileri
Üye
Mesajlar: 55
Kayıt: 06 Tem 2007 11:30

benim kullandığım 2 ayrı prosedürde şöyle.

Mesaj gönderen tanerileri »

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;


kullanılışı ; ProgramKapat('Resimgor'); sadece pencere adı yani maninform caption yeterli. exe ye gerek yok
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

hacker_10-ur yazdı:önemli değil arkadaşım.... eğer açtığın programda veri kaydetmek istiyorsan programa tuş yollayabilirsin... şöyle

örnek:
SendKeys('Hesap Makinesi', [VK_Menu, VK_F4]);
[/code]
Arkadaşım ;

Kod anlamında bu olay için sorun yok; sadece bazı konularında aydınlatılması gerek; amam ctrl-s tuşunu gönderdi ama dosya 30 mb.. daha kaydın başında birde killtask yaparsa ne olur?

demem o ki konunun geri planını bilmeden alıp kullanan birisinin sonradan başı ağrımasın.
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