PDA

View Full Version : یه تابع API



moh_maj
جمعه 22 دی 1385, 12:41 عصر
با سلام به همه دوستان
من برای بستن کامل پروژه ام با Application.terminate مشکل دارم و دنبال یه تابع API می گردم که باهاش بتونم پروژه ام رو بطور کامل ببندم، مثل فرمان بالا. لطفاً اگه می دونین سریع بگین که خیلی لازم دارم. اگه راه دیگه ای هم به نظرتون می رسه بگین.
با تشکر به امید دیدار

Inprise
جمعه 22 دی 1385, 12:51 عصر
TerminateProcess معادل Application.Terminate نیست اما میتونی ازش استفاده کنی .

Hamid_PaK
جمعه 22 دی 1385, 13:50 عصر
از PostQuitMessage استفاده کن ببین جواب می گیری ...


PostQuitMessage( 0 );


یا حق ...

فرزاد دلفی باز
جمعه 22 دی 1385, 14:04 عصر
البته موارد فوق همگی درسته در تکمیل حرفهای دوستان استفاده از تابع Kill هم موثره :


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;


البته uses اون بایدTLHelp32 استفاده کنی.....

حرفه ای
جمعه 22 دی 1385, 20:07 عصر
می تونی از تابع Halt هم استفاده کنی !

greenway
جمعه 22 دی 1385, 21:13 عصر
با سلام به همه دوستان
من برای بستن کامل پروژه ام با Application.terminate مشکل دارم و دنبال یه تابع API می گردم که باهاش بتونم پروژه ام رو بطور کامل ببندم،


ExitProcess(RetunValue(

moh_maj
شنبه 23 دی 1385, 07:11 صبح
با سلام و تشکر از همتون
1- آقا حمید متأسفانه دستور شما مانند Application.terminate خطا می ده.
2- آقا فرزاد این تابع API که شما نوشتی معادل دستور Close() هست و پروژه رو کامل نمی بنده.
اون دو تای دیگه رو امتحان نکردم. یه چک می کنم و جواب می دم.
با تشکر از همه به امید دیدار

moh_maj
شنبه 23 دی 1385, 07:40 صبح
باز هم سلام
دستور جنای حرفه ای کار می کنه و خطا هم نداره. جناب greeway دستور شما در قسمت آرگومان (returnValue) ایراد داره.
باز هم از همتون تشکر می کنم. به امید دیدار

greenway
شنبه 23 دی 1385, 12:35 عصر
باز هم سلام
دستور جنای حرفه ای کار می کنه و خطا هم نداره. جناب greeway دستور شما در قسمت آرگومان (returnValue) ایراد داره.
باز هم از همتون تشکر می کنم. به امید دیدار

باید عدد بگذاری ، منظور مقدار بازگشتی بود .
مثلا :‌


ExitProcess(0);

Ahmad Chehreghani
شنبه 23 دی 1385, 22:30 عصر
من از Halt استفاده می کنم

حرفه ای
یک شنبه 24 دی 1385, 10:00 صبح
دستور Application.Terminate به منظور بستن برنامه ابتدا کلیه exception را چک کرده سبب به سراغ رویداد OnClose می رود و سپس آجکتها را Free کرده و برنامه را از حافظه خارج می کند اما کاربرد آن این است که در تمامی فرمها قابل استفاد ه است در صورتی که تابع Close فقط در فرم اصلی موجب بستن برنامه می شود .
تابع Halt موجب می شود Process برنامه از حافظه خارج شود و اگر برنامه ما دچار Bug نیز شده باشد نشان داده نمی شود .