ورود

View Full Version : بستن یک برنامه دیگر از داخل دلفی



hadisalahi2
چهارشنبه 02 بهمن 1392, 15:40 عصر
سلام دوستان
من میخوام یک برنامه رو از داخل دلفی ببندم.
بعد از گشت و گذار ، این تیکه کد رو پیدا کردم

function KillApp(const sCapt: PChar) : boolean;
var AppHandle:THandle;
begin
AppHandle:=FindWindow(Nil, sCapt) ;
Result:=PostMessage(AppHandle, WM_QUIT, 0, 0) ;
end;

این مدلی هم استفاده میکنم


KillApp('SmsSender');

البته نمیدونم پارامتر رو درست ارسال میکنم یا نه ؟
من نام نرم افزاری رو که در حال اجرا هست رو پاس میدم به تابع

اما نمیدونم چرا پس از اجرای این تیکه کد ، خود برنامه ای که داخل اون هستم ، بسته میشه!!!!!

یکی یک تیکه کد بدرد بخور داره بده به ما
چند تا دیگه از اینترنت گرفتن ، اما هیچ کدومش به درد نخورد و کار نمیکرد

یوسف زالی
چهارشنبه 02 بهمن 1392, 15:47 عصر
سلام.
به نظرم بهتره با TaskKill این کار رو انجام بدید. کافیه در شل کامند، PID برنامه مورد نظرتون رو بهش بفرستید. سوییچ های خوبی هم داره.
?/ CMD -> taskkill

hadisalahi2
چهارشنبه 02 بهمن 1392, 16:54 عصر
من این مدلی

ShellExecute(Handle, 'open', PChar('cmd.exe'),
PChar('TaskKill /F /IM ' + TaskName ),
nil, SW_HIDE);
میام تا برنامه رو ببندم
ولی اصلی جواب نمیده
ولی وقتی همون دستور رو توی Cmd مینویسم عمل میکنه :متعجب:

علتش چی ممکنه باشه؟

Felony
چهارشنبه 02 بهمن 1392, 17:26 عصر
اولا TaskKill خودش یه فایل اجرایی هست ، نیازی به اون مدل صدا زدن نیست :


ShellExecute(0, nil, PChar('TaskKill.exe'), PChar('TaskKill /F /IM ' + TaskName), nil, SW_HIDE);

ثانیا ، راه درست باز کردن پروسه مورد نظر با تابع OpenProcess و سپس بستن اون با تابع TerminateProcess هست نه اون روش :

http://www.swissdelphicenter.ch/torry/showcode.php?id=266

Pascal
چهارشنبه 02 بهمن 1392, 18:25 عصر
سلام دوستان
من میخوام یک برنامه رو از داخل دلفی ببندم.
بعد از گشت و گذار ، این تیکه کد رو پیدا کردم

function KillApp(const sCapt: PChar) : boolean;
var AppHandle:THandle;
begin
AppHandle:=FindWindow(Nil, sCapt) ;
Result:=PostMessage(AppHandle, WM_QUIT, 0, 0) ;
end;

این مدلی هم استفاده میکنم


KillApp('SmsSender');

البته نمیدونم پارامتر رو درست ارسال میکنم یا نه ؟
من نام نرم افزاری رو که در حال اجرا هست رو پاس میدم به تابع

اما نمیدونم چرا پس از اجرای این تیکه کد ، خود برنامه ای که داخل اون هستم ، بسته میشه!!!!!

یکی یک تیکه کد بدرد بخور داره بده به ما
چند تا دیگه از اینترنت گرفتن ، اما هیچ کدومش به درد نخورد و کار نمیکرد
کد رو اینطور تغییر بدید


function KillApp(const sCapt: PChar) : boolean;
var AppHandle:THandle;
begin
AppHandle:=FindWindow(Nil, sCapt) ;
if AppHandle<>0 then

Result:=PostMessage(AppHandle, WM_QUIT, 0, 0) ;
end;