ورود

View Full Version : بستن پروسه



Mask
پنج شنبه 05 فروردین 1389, 17:30 عصر
با سلام
می دونم به دفعات این سوال مطرح شده اما مشکل من چیزه دیگه ایه.
من با استفاده از کد زیر یک پروسه رو می بندم.

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.szExeF ile)) =
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;
بنا به لایلی مجبور شدم برای اینکه کاربر نتونه برنامه منو از Taskmgr ببنده با استفاده از یک Dll موجود در کتابخانه MadShit برنامم رو محافظت کنم.
از زمانی که از این dll استفاده میکنم این تابعی که برای بستن پروسه ازش استفاده می کردم eror میده و به تکست dwSize موجود در تابع گیر میده.
بعدش اومدم از ProcessInfo آقای کشاورز استفاده کردم و اول ترید ها رو بستم تا برنامه پروسش بسته بشه اما چون در یک دکمه من چنتا پروسه رو میبندم نمیتونه این کار رو انجام بدم.

AProcess := ProcessInfo1.RunningProcesses.FindByName('svchos.e xe');
if Assigned(AProcess) then
begin
for i := 0 to AProcess.Threads.Count-1 do
AProcess.Threads[i].TerminateThread;
end;
AProcess := ProcessInfo1.RunningProcesses.FindByName('client.e xe');
if Assigned(AProcess) then
begin
for i := 0 to AProcess.Threads.Count-1 do
AProcess.Threads[i].TerminateThread;
end;
AProcess := ProcessInfo1.RunningProcesses.FindByName('YahooMes senger.exe');
if Assigned(AProcess) then
begin
for i := 0 to AProcess.Threads.Count-1 do
AProcess.Threads[i].TerminateThread;
end;
چل کدی برای بستن پروسه غیر از کدهای موجود پیشنهاد می کنید.
ممنون

DAMAVAND
پنج شنبه 05 فروردین 1389, 19:40 عصر
استفاده از دستورات خط فرمان رو امتحان کرديد ?
taskkill,tskill