PDA

View Full Version : سوال: بسته شدن غیر عادی برنامه



D32.00110
شنبه 15 تیر 1387, 10:23 صبح
یا عزیز

دوستان من میخوام که برنامه موقع بسته شدن یه کارهایی بکنه در حالت معمولی مشکلی نیست ولی مثلا وقتی که :

1) برق میره
2) End Task میشه
3) بر اثر خطا
4) یا هر چیز غیر عادی

برنامه بسته میشه چی کار میشه کرد ایا میشه اینارو کنترل کرد ؟؟؟

اگه میشه درباره Query unload و Mode های اون هم یه توضیح بدید ... :چشمک:

vbhamed
شنبه 15 تیر 1387, 10:44 صبح
سلام
رفتن برق رو كه نميشه كنترل كرد ولي يك راه ديگه وجود داره

موقع ورود به برنامه يك فايل ايجاد كنيد يا در رجيستري يك مقدار دلخواه رو 1 كنيد
موقع خروج طبيعي از برنامه فايل رو پاك كنيد يا در رجيستري مقدار دلخواه رو 0 كنيد

حالا موقع ورود به برنامه وجود اون فايل يا مقدار ثبت شده رو تست كنيد، اگر فايل وجود نداشت يا مقدار رجيستري 0 بود يعني دفعه قبل به صورت طبيعي از برنامه خارج شدين در غير اينصورت يعني بصورت غير معمول خارج شده كه برنامتون فايل رو پاك نكرده يا كليد رو 0 نكرده

مهران رسا
شنبه 15 تیر 1387, 12:33 عصر
برنامه بسته میشه چی کار میشه کرد ایا میشه اینارو کنترل کرد ؟؟؟


بستگی داره منظور شما از کنترل کردن چی باشه ؟!!

اگه بخوای جلوشو بگیری که امکان نداره . در غیر اینصورت راهی که جناب Vbhamed گفتند می تونه به شما کمک کنه ..

ابوذر محمودی
شنبه 15 تیر 1387, 13:02 عصر
دوست عزیز تو این جور مواقع پردازش برنامه مستقیم از سی پی یو خارج می شه
دیگه نمی تونی کنترلشون کنی
فقط می تونی دفعه بعد که برنامه بالا اومد بفهمی که طبیعی خارج شدی یا نه .
یعنی همون چیزی که vbhamed گفتن

* bashe m8spy hamon ke to migi RAM

ASedJavad
شنبه 15 تیر 1387, 16:30 عصر
ولي فكر كنم بشه يه جورايي بعضي وقتها كنترلش كرد.
وقتي از طريق منوي ران يا تسك منيجر يا از بعضي طرق ديگه، دستور شات داون يا لوگ آف يا ... داده بشه، اگه ورد يا يكي از نرم افزارهاي آفيس باز باشه،
سوال Do you want to save ... رو مي پرسه ولي تو وي بي دستورايي كه تو form_unloaad ‌يا form_quaryynload هستند، در اين صورت اجرا نمي شن و بلافاصله بسته مي شه.

D32.00110
شنبه 15 تیر 1387, 17:43 عصر
اقا ترکوندین ها :لبخند:

vbhamed جان ممنون ولی من میخوام وقتی برنامه بسته میشه این کار انجام بشه نه وقتی که دوباره برنامه رو باز میکنم ...




بستگی داره منظور شما از کنترل کردن چی باشه ؟!!

یعنی بفهمم که برنامه غیر عادی بسته شده و مثلا یه روال اجرا بکنم



ولي فكر كنم بشه يه جورايي بعضي وقتها كنترلش كرد.
وقتي از طريق منوي ران يا تسك منيجر يا از بعضي طرق ديگه، دستور شات داون يا لوگ آف يا ... داده بشه، اگه ورد يا يكي از نرم افزارهاي آفيس باز باشه،
سوال Do you want to save ... رو مي پرسه ولي تو وي بي دستورايي كه تو form_unloaad ‌يا form_quaryynload هستند، در اين صورت اجرا نمي شن و بلافاصله بسته مي شه.
ممنون به نکته کنکوری اشاره کردین :لبخند: یه چیزی شبیه این میخوام ولی این فقط شامل مورد 2 که گفتم میشه ...

کسی در مورد query unload کمک نمیکنه ؟؟؟

vbhamed
یک شنبه 16 تیر 1387, 11:15 صبح
vbhamed جان ممنون ولی من میخوام وقتی برنامه بسته میشه این کار انجام بشه نه وقتی که دوباره برنامه رو باز میکنم ...
یعنی بفهمم که برنامه غیر عادی بسته شده و مثلا یه روال اجرا بکنموقتي مثلا يكي بياد دكمه ريست رو بزنه كه كاري مي توني انجام بدي
ضمنا فرق خاصي نداره
فرض محال بشه، همون كار رو مي شه موقع شروع مجدد برنامه هم انجام داد چون شرايط تقريبا يكسان هست


کسی در مورد query unload کمک نمیکنه ؟؟؟Query_Unload متدي هست كه توش ميشه فهميد برنامه داره بسته ميشه و اونجا از كاربر مي توني سؤالي بپرسي

ولي با Unload يك فرقي داره

Unload موقعي كه دكمه ضربدر فرم رو بزني يا معمولي با كد Unload كني فراخوني ميشه
اما Query_Unload مثلا وقتي كه كاربر دكمه پاور كامپيوترش رو هم بزنه فراخوني ميشه و مي توني بفهمي Unload شدن از چه نوعي بوده كه پارامتر UnloadMode اين رو بر مي گردونه

UnloadMode = 0 : برنامه توسط فرم خودش يا دكمه ضربدر داره بسته ميشه
UnloadMode = 2 : برنامه توسط سيستم وقتي دكمه پاور زده شده داره بسته ميشه
UnloadMode = 3 : برنامه توسط TaskManager ويندوز داره بسته ميشه


مثلا دستور زير رو اگر بنويسي هر چي دكمه پاور رو بزني كامپيوترت خاموش نميشه و از ويندوز خارج نميشه


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

If UnloadMode = 2 Then Cancel = True

End Sub

D32.00110
یک شنبه 16 تیر 1387, 22:06 عصر
از مدیران برای کنترل تاپیک تشکر میکنم واقعا که این سایت یدونه هست به هر حال برنامه نویس ها جمع شدن اینجا دیگه ...
فدای هر چی برنامه نویس ...




UnloadMode = 0 : برنامه توسط فرم خودش يا دكمه ضربدر داره بسته ميشه
UnloadMode = 2 : برنامه توسط سيستم وقتي دكمه پاور زده شده داره بسته ميشه
UnloadMode = 3 : برنامه توسط TaskManager ويندوز داره بسته ميشه



ممنون vbhamed جان اینا کمکم کرد خدا ازت راضی باشه :چشمک: پس من هی اینو میپرسیدم چرا نمیگفتی داداش ؟؟؟ :بوس:
فقط یه چیزی اگه برنامه به دلیل خطا بسته بشه (خطایی که باعث بسته شدن ناگهانی برنامه میشه نه خطای کنترل شده) هم میشه با این کنترل کرد و از بسته شدن برنامه جلوگیری کرد ؟؟؟

vbhamed
یک شنبه 16 تیر 1387, 23:03 عصر
فقط یه چیزی اگه برنامه به دلیل خطا بسته بشه (خطایی که باعث بسته شدن ناگهانی برنامه میشه نه خطای کنترل شده) هم میشه با این کنترل کرد و از بسته شدن برنامه جلوگیری کرد ؟؟؟

سلام

شما لطف داريد، وظيفه بود
در مورد بعدي هم اينكه چيزي كه بالا نوشتي رو قبلا به دو شكل مختلف ديگه پرسيده بودين و همونطور كه قبلا هم گفته شد نميشه
اصلا اگر برنامه ناگهاني بسته بشه، ديگه فرصتي براي انجام كاري نيست
اما شما اگر بگي هدف نهاييت چي هست و مي خواي چه كاري دقيقا انجام بدي شايد بهتر بشه راهنمايي كرد

alifatehi
دوشنبه 17 تیر 1387, 01:49 صبح
سلام
نرم فزاری دیدم که تمام و کمال با اکسس نوشته شده بود . وقتی که می خواستی رایانه رو رستارد یا خاموش کنی برنامه نمی گذاشت این کار انجام شود و وقتی که برنامه رو به صورت طبیعی می بستی مشکل حل می شد اگر تمایلی داشتی تصاویر از برنامه رو قرار بدم

D32.00110
دوشنبه 17 تیر 1387, 12:44 عصر
سلام

شما لطف داريد، وظيفه بود
در مورد بعدي هم اينكه چيزي كه بالا نوشتي رو قبلا به دو شكل مختلف ديگه پرسيده بودين و همونطور كه قبلا هم گفته شد نميشه
اصلا اگر برنامه ناگهاني بسته بشه، ديگه فرصتي براي انجام كاري نيست
اما شما اگر بگي هدف نهاييت چي هست و مي خواي چه كاري دقيقا انجام بدي شايد بهتر بشه راهنمايي كرد
تعداد پستهات عدد جالبی شده (999) :بامزه:
ببین برنامه دو قسمت هست یعنی 2 تا برنامه هست که هر کدوم روی یه کامپیوتر هست من میخوام وقتی که یکی بسته شد حالا به هر دلیلی اون یکی برنامه بفهمه (برنامه با WinSock به هم مرتبط میشن)
مشکل من ، فهمیدن بسته شدن برنامه اول هست که بعدش خبر میدم به اون برنامه حالا اگه هم این اخری نشه عیبی نداره همین Mode ها که گفتی کمک کرد ... :قلب:


alifatehi جان ممنون اینی که میگید رو با کمک vbhamed حل کردیم ... :چشمک:

vbhamed
دوشنبه 17 تیر 1387, 18:16 عصر
سلام
نرم فزاری دیدم که تمام و کمال با اکسس نوشته شده بود . وقتی که می خواستی رایانه رو رستارد یا خاموش کنی برنامه نمی گذاشت این کار انجام شود و وقتی که برنامه رو به صورت طبیعی می بستی مشکل حل می شد اگر تمایلی داشتی تصاویر از برنامه رو قرار بدم

سلام
اون نرم افزار جلوي دكمه ريست كامپيوتر رو كه نمي تونه بگيره يا اينكه سيم رو از برق بكشي
منظور دوستمون اين چيزا بود

vbhamed
دوشنبه 17 تیر 1387, 18:18 عصر
ببین برنامه دو قسمت هست یعنی 2 تا برنامه هست که هر کدوم روی یه کامپیوتر هست من میخوام وقتی که یکی بسته شد حالا به هر دلیلی اون یکی برنامه بفهمه (برنامه با WinSock به هم مرتبط میشن)
مشکل من ، فهمیدن بسته شدن برنامه اول هست که بعدش خبر میدم به اون برنامه حالا اگه هم این اخری نشه عیبی نداره همین Mode ها که گفتی کمک کرد ... :قلب:


مي توني دو تا تايمر هم تو برنامه هات بزاري كه هر چند ثانيه با فرستادن يك ديتاي مشخص، در حال اجرا بودنشون رو به هم اطلاع بدن

D32.00110
سه شنبه 18 تیر 1387, 16:55 عصر
مي توني دو تا تايمر هم تو برنامه هات بزاري كه هر چند ثانيه با فرستادن يك ديتاي مشخص، در حال اجرا بودنشون رو به هم اطلاع بدن

ممنون vbhamed جان :بوس: اره اینم میشه ولی باره برنامه زیاد میشه ...

نتیجه : در بعضی موارد میشه کنترل کرد :
http://barnamenevis.org/forum/showpost.php?p=547324&postcount=7
/ تمام