ايران ويج

نسخه‌ی کامل: ارسال پارامتر به برنامه ی در حال اجرا.
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4
چطور میشه مثلا یک تابع توی برنامه ای که اجرا شده رو فراخونی کرد؟
برای Uninstall کردن می خوام کاری کنم که تغییرات برنامه رو با خود برنامه که در حال اجراست پاک کنم و از دیتا بیس ها پشتیبان بگیرم و از این کارا دیگه.
یکم بیشتر توضیح بده !
بهتر نبود تاپیک رو تو قسمت وی بی می زدی ؟ Rolleyes
اِ، مگه وی بی نیست؟
برنامه ی من مثلا روی یک دیتا بیس کار می کنه. مثلا ثبت زمان هایی که به اینترنت وصله کامپیوتر. بدیهیه که برنامه همیشه باید باز باشه.
حالا در نظر بگیرید که برای این برنامه یه Setup ساختم و طرف نصبش می کنه. از دستش خسته میشه و باید uninstall کنه. اما دیتا بیس رو باید نگه داره و مثلا تغییرات رجیسترری هم باید از بین بره و البته برنامه باید بسته بشه.
حالا من یه Sub برای این کار ها توی برنامه قرار دادم. حالا چطور این sub رو از خارج (مثل همون فایل uninstall) اجرا کنم ؟
یا احتمالا برای شما پیش اومده که فایل موزیک رو با مدیا پلیر دارید پخ می کنیدو مینی مایزش کردین. بعد روی یه فایل MP3 دابل کلیک می کنید ولی ویندوز میدیاپلیر جدید باز نمی شه. بلکه به قولی restore می شه و شرو می کنه فایل جدید رو پخش کردن. برنامه ی منم اینطور سیستمی می خواد.
لطفا راهنماییم کنید.
حالا سوای روشی که برای اجرای یک فرمان از جارج برنامه, (چون خودمم بلد نیستم) وجود داره:
بهتره برای اینطور کارها, Install و UnInstall برنامه هاتون رو در قالب Microsoft Installer ایجاد کنید تا هم مشکلاتی نظیر "درحال اجرا بودن برنامه و امکان خارج کردن آن از حالت نصب" رو نداشته باشید و هم از بقیه امکانات عالی Microsoft Installer برای برنامه هاتون استفاده کنید نظیر:
* نصب و یا خارج کردن از حالت نصب در هر زمان (حتی وقتی برنامه در حال اجراست)
* امکان ایجاد و توزیع بسته های نصب برای به روز کردن برنامه هاتون (چیزی شبیه Service Pack ها)
* واگذاری اعمال و برگرداندن همه تغییرات مورد نیاز نصب و Uninstall برعهده خود Microsoft Installer و شما فقط یک روتین ویزارد رو طی کنید.
* ایجاد نقاد احیای خودکار در قبل و بعد از نصب ( به این ترتیب اگر برنامه شما صدمه ای به سیستم کاربر محترم بزند کاربر عزیز خیلی راحت با استفاده از System Restore می تونه تنظیمات رو به زمان قبل از برنامه شما برگردونه و نفس راحت بکشه و به جون برنامه سازان آن دعا کند- آخه هر برنامه ای ممکن است با نرم افزار و سخت افزار های مختلف رفتار های متفاوتی نشان دهد)
* حتی اگر کاربر همه فایل های اساسی برنامه شما (حتی فایل های مورد نیاز برای Uninstall ) را از روی دیسک سختش Shift+Del هم کند باز برنامه شما به لطف مایکروسافت Installer قادر به Ununstall شدت است.
* امکان قطعه بندی برنامه تان و دادن امکان دسترسی به کابران برای استفاده, نصب و ... همانند Microsoft Office (مثلا شما در آفیس می تونید امکان Speach رو نصب نکنبد اما حتی وقتی Word در حال اجراست شما میتونید Speach را هم نصب و استفاده کنید).
* Microsoft Installer پیوند محکمی با ویندوز دارد به همین دلیل هر کسی به راحتی نمی تواند برنامه شما را که برمبنای Microsoft Installer نصب شده است را با سهل انگاری و یا پاک کردن یا دست کاری قسمتی از سیستم برنامه تان, دچار مشکل در اجرا نماید.
* شما به وسیله امکانات Microsoft Installer می توانید تنظیمات برنامه تان را خیلی راحت به تنظیمات زمان نصب برگردانید.

* دیگه یادم نمی یاد ...
نقل قول: اِ، مگه وی بی نیست؟
تو خود وی بی باید می زدی نه راه اندازی

خوب شما یه فایل اگزه دیگه برای آن انستال درست کن
که بیاد و تنظیمات قبلی برنامه رو در قالب یک فایل ini ذخیره کنه
و بعدا بشه باز گردوندش
یا یه کلید دیگه تو ریجستری درست کن و تنظیمات قبلی رو در اونجا بریز

خیلی از برنامه ها هستن که بعد از آن اینتالشون هم یسری اطلاعاتشون تو
ریجستری باقی می مونه !
برای دفعه بعد و 100 % حذف نمی شن
و در واقع کامپیوتر به شکل قبل از نصب برنامه در نمی آد !

نقل قول: یا احتمالا برای شما پیش اومده که فایل موزیک رو با مدیا پلیر دارید پخ می کنیدو مینی مایزش کردین. بعد روی یه فایل MP3 دابل کلیک می کنید ولی ویندوز میدیاپلیر جدید باز نمی شه. بلکه به قولی restore می شه و شرو می کنه فایل جدید رو پخش کردن. برنامه ی منم اینطور سیستمی می خواد.
ارتباطی بین سوالت و این ها پیدا نکردم !
یکم توضیح بده لطفآ !
سلام
معمولا برنامه های اینستالر روشهایی برای اینکارها دارن . یه روش که من استفاده میکنم برا موقع آنیستال ساخت یه فایل اگزه جدا گانست که کارهای لازمه ( مثلا همین بکاپ ) رو انجام میده . معمولا تو برنامه های اینستالر ( من از wise package studio استفاده میکنم ) بخشی هست که میشه تعیین کرد قبل از آنیستال یه فایل اگزه اجرا بشه و خوب با این کار قبل از حذف برنامه اون فایل من میاد و کارهای لازم رو انجام میده
Iron_Fist نوشته است:
نقل قول: ... بعد روی یه فایل MP3 دابل کلیک می کنید ولی ویندوز میدیاپلیر جدید باز نمی شه...
ارتباطی بین سوالت و این ها پیدا نکردم !
اتفاقا اصل سوالش همین بود!
ایشون (و البته من) می خواند بدونند چطور میشه یه زیر برنامه را در برنامه App1 به وسیله برنامه App2 صدا زد.
و به مورد استفادش هم اشاره کردند. ویندوز برای اینکه یک فایل صوتی تصویری جدید را به وسیله مدیا پلیر پخش کند (حتی اگر مدیا پلیر در حال اجرا باشد) نمی آید و ابتدا مدیا پلیرو ببنده و دوباره آن را با فرمان فایل جدید اجرا کند. بلکه آن فایل صوتی تصویری در همان مدیا پلیر باز به اجرا در می آید.

______________________
جواب: گفتم که من چیزی در این باره نمی دونم اما خودمم خیلی دنبالش بودم.
اگر اشتباه نکنم با PostMessage و GetMessage باید بشه همچین کاری کرد که البت من روشش رو نمی دونم و از د.ستان می خوام اگر در این باره اطلاعاتی دارند در اختیار ما قرار بدند.
Darg به ارتباط میدیا پلیر با سول من پی برد.
در مورد فایل اگزه ی جدید ... راستش به این هم فکر کردم ولی چطور میشه که با این اگزه ی جدید برنامه در حال اجرا رو بست؟
نقل قول: یشون (و البته من) می خواند بدونند چطور میشه یه زیر برنامه را در برنامه App1 به وسیله برنامه App2 صدا زد.
من هم نمی دونم چجوری از این برنامه باید برای اون برنامه پیغام فرستاد
ولی کاری که جای اون می شه کرد اینه که مثلا یه مقدار تو ریجستری برنامه
اول بسازه و برنامه دوم از اون مقدار استفاده کنه
و مثلا اگر مقدارش 1 بود ساب فلان رو صدا کنه و اگر مقدارش 2 یه ساب دیگه
و در واقع اینطوری ازتباط برقرار بشه
نقل قول: راستش به این هم فکر کردم ولی چطور میشه که با این اگزه ی جدید برنامه در حال اجرا رو بست؟
خوب پروسسش رو ببند !
Iron_Fist نوشته است:... ولی کاری که جای اون می شه کرد اینه که مثلا یه مقدار تو ریجستری برنامه اول بسازه  و برنامه دوم از اون مقدار استفاده کنه...
این طوری برنامه میزبان مجبوره یه تایمر (روال چک میزان داده) داشته باشه!
اما اون روشی که گفتم API مطمعنم وجود د اره 5 یا 6 سال پیش توی یه کتاب دیدم اما از شانس بدم قلم کلغذ نداشتن جزوه بردارم.
در اون روش برنامه میزبان رویه ای داره فقط زمانی که فرمان از طرف یک برنامه دیگه بهش برسه اجرا میشه و خیلی تروتمیز کار انجام میده حتی فرمانSendMessage هم زیر مجموعه ای از اون API هست.
یعنی شما چطور می تونید به یک کنترل یا پنجره خاص فرمان صادر کنید برای تغییر خصوصیاتش, همین کار رو می تونید روی برنامه های خودتون هم انجام بدبد.
نقل قول: ما اون روشی که گفتم API مطمعنم
بله وجود داره
نقل قول: حتی فرمانSendMessage هم زیر مجموعه ای از اون API هست.
تو ویندوز بیش از 700 پیغام وجود داره

همچنین می شه پیغام هم تعریف کرد با  WM_USER+1 ~ WM_USER+31743
البته بلد نیستم Biggrin
صفحه‌ها: 1 2 3 4