Sadece beceremediğim için saat 06:30 dan beri rüyamda çözmeye uğraşıyorum. Lütfen yardım ederseniz Çoookkk sevineceğim.
KillTask('exeadi.exe') ile programı terminate eden bi kod kullanıyorum
Kullanmam da şart.
Uses kısmına TLhelp32 ile beraber
Kod: Tümünü seç
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;
Sonuç olarak exe adını kullanarak uygulamayı sonlandırmam lazım.
Şimdi gelelim bir iki tane örneğe.
Kod: Tümünü seç
function ReverseString(const AText: string): string;
var
I: Integer;
P: PChar;
begin
SetLength(Result, Length(AText));
P := PChar(Result);
for I := Length(AText) downto 1 do
begin
P^ := AText[I];
Inc(P);
end;
end;
if pos('\',ProgExe) <> 0 then //path varsa.
begin
ProgExe:=copy(ProgExe,pos('exe.',ProgExe),pos('\',ProgExe)-pos('exe.',ProgExe)); // 7ihpleD\dnalroB\seliF margorP\:C şekline gelir.
ProgExe := copy(ProgExe,pos('exe.',ProgExe),length(ProgExe));
end;
ProgExe:=reversestring(ProgExe);
Try KillTask(ProgExe); Except showmessage('Hata !') End;
ProgExe için

C:\PROGRA~1\A4Tech\Keyboard\Ikeymain.exe bunu Ikeymain.exe olarak döndürüyor. OK

"C:\Program Files\Kaspersky Lab\Kaspersky Anti-Virus Personal\kav.exe" /minimize bunu kav.exe olarak döndürüyor. OK

"C:\Program Files\Kaspersky Lab\Kaspersky Anti-Hacker\KAVPF.exe" /silence bunu KAVPF.exe olarak döndürüyor. OK

q:\YeDeK2\Belgelerim\Office\Delphi\WebAytek Hatırlatıcı\WebAytek Reminder & Shutter.exe bunu WebAytek Reminder & Shutter.exe olarak döndürüyor OK.

C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.EXE bunu \OUTLOOK.EXE olarak döndürüyor. asıl istediğim OUTLOOK.EXE olarak dndürmesi

RUNDLL32.EXE TWEAKUI.CPL,TweakMeUp bunu maalesef RUNDLL32.EXE TWEAKUI.CPL,TweakMeUp şekilde dönüştürüyor. - istediğim RUNDLL32.EXE şekline döndürmesi.

RUNDLL32.EXE C:\WINDOWS\System32\NvMcTray.dll,NvTaskbarInit bunu da \NvMcTray.dll,NvTaskbarInit şekilde dönüştürüyor. - istediğim RUNDLL32.EXE şekline döndürmesi.

nwiz.exe /install bunu nwiz.exe /install olarak döndürüyor. istediğim nwiz.exe olarak döndürmesi.

"C:\Program Files\MSN Messenger\MsnMsgr.Exe" /background bunu da \MsnMsgr.Exe" /background olarak döndürüyor. isteğim - MsnMsgr.Exe olarak döndürmesi.
Yani durum şu - herhangi bir path içinde bulunan (tamyolu) xxx.exe adının çekip çıkartılabilmesi. xxx.exe exe adı değiştiği gibi yazım şekilleri de değişiyor. O yüzden ortak bi formül bulamadım.
yardımcı olursanız sevinirim. KOLAY GELSİN