PDA

View Full Version : چطور برنامه متوجه بسته شدنش بشود؟



sajioo
جمعه 31 مرداد 1393, 13:34 عصر
با سلام
دوستان وقتی در رویداد onclose فرم عملیاتی انجام شود قبل از بسته شدم فرم اون عملیات انجام می شود.
ولی اگر برنامه را از task manager و از تب processes ببندیم و end process را بزنیم رویداد on close اجرا نمیشه . دلیل چیه و چطور این مشکل را حل کنیم؟
تشکر

alireza es
جمعه 31 مرداد 1393, 15:36 عصر
وقتی برنامه رو از حالت عادی میبندیم درواقع ویندوز یه پیغام به برنامه میده که لطفا بسته شو!و ما میتونم با اون پیغام
مثل رویداد رفتار کنیم و به جای بسته شدن کارهای دیگه ای رو انجام بدیم مثلا برنامه رو بفرستیم به پس زمینه
حتی میتونیم با استفاده از این روش نرم افزار های دیگه ای رو ببندیم:شیطان:
اما وقتی برنامه رو end process بکنیم ویندوز هیچ پیغامی رو به نرم افزار نمیفرسته و پروسه رو خودش میبنده(حالت خشن تر)
در این حالت نمیتونیم هیچ رویدادی رو اجرا کنیم فقط باروش هایی میتونیم از بسته شدن برنامه جلوگیری کنیم و در این صورت کاربر
با end process کردن برنامه بایک خطا مواجه میشه.مثال این کار اکثر انتی ویروس ها هستن که وقتی بخواین end process کنین با ارور مواجه میشین

sajioo
جمعه 31 مرداد 1393, 17:12 عصر
در این حالت نمیتونیم هیچ رویدادی رو اجرا کنیم فقط باروش هایی میتونیم از بسته شدن برنامه جلوگیری کنیم و در این صورت کاربر
با end process کردن برنامه بایک خطا مواجه میشه.مثال این کار اکثر انتی ویروس ها هستن که وقتی بخواین end process کنین با ارور مواجه میشین


یعنی هیچ راهی نداره؟
حالا چطور میشه جلوشو گرفت؟

Mask
یک شنبه 02 شهریور 1393, 22:34 عصر
یه راهش هوک کردن توابع TerminateProc هست. دیگه اینجوری هر برنامه ای که بخاد Terminate Proces بشه شما در جریان قرار میگیرید و مدیریت میکنید.
برای این کار هم نمونه زیاده .میتونید از MagicApiHook استفاده کنید.

sajioo
دوشنبه 03 شهریور 1393, 11:20 صبح
تشکر ماسک عزیز
اگه بشه یک نمونه مثال بزنی منو شاد کردی عزیز
بسیار تشکر