برای طرح سوال و دسترسی به آموزش ها  کانال ما در تلگرام بپویندید  

kill process بستن یک برنامه در دلفی

به نام دانای بر حق

 

یکی از چیزهایی که قبلا تو xmen برای این حقیر جذاب بودش این بودش که برای هر کاری یه sample وجود داشتش. استاد مبین همیشه پیشتاز این عرصه بودش با اقتدا به ایشان. البته انتشار این مثال ها جنبه عملی و چیز جدیدی نداره ها فقط مثال هستش بودنشون خالی از لطف نیست.

kill process  با استفاده از نام فایل:

استفاده از unit مشخص شده Winapi.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),
۰));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;

نحوه استفاده:

procedure TForm1.btnKillTaskClick(Sender: TObject);
begin
  KillTask('test.exe');
end;

kill process ستفاده از pid :

استفاده از تابع زیر میتونید یک برنامه با استفاده از pid به کارش خاتمه بدین:

function TerminateProcessByID(ProcessID: Cardinal): Boolean;
var
  hProcess : THandle;
begin
  Result := False;
  hProcess := OpenProcess(PROCESS_TERMINATE,False,ProcessID);
  if hProcess > 0 then
  try
    Result := Win32Check(Windows.TerminateProcess(hProcess,0));
  finally
    CloseHandle(hProcess);
  end;
end;

نحوه استفاده:

 

procedure TForm1.btnKillTaskClick(Sender: TObject);
begin
    TerminateProcessByID(123);
end;

 


انتشار

در

توسط

برچسب‌ها:

نظرات

4 پاسخ به “kill process بستن یک برنامه در دلفی”
  1. سلام
    از اینطور پست زیاد بزار البته پیشرفته تر
    الان با این روش مثلا آنتی ویروس x بسته نمیشه چرا ؟
    چون تابع terminate process رو هوک کرده ؟ میشه آنهوکش کرد ؟

    1. ‌A1Gard

      نباید هم بسته بشه چون سرویس خوده آنتی ازش محافظت میکنه
      بله میشه unhook کرد منتهی مراتب هوک های ring3 نیست که بشه این کار رو کرد باید ring0 حرکت بزنی یه سویچ خفن کنی رو cpp ; )

  2. —–

    اینارو خودت میگی یا کسیم کمکت می کنه ؟

    1. ‌A1Gard

      امداد های غیبی به هر حال همیشه شامل حال ما میشن ‌;)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *