سلام
یه فیلم با فرمت mpg تو اوتورانم با مولتی مدیا بیلدر گذاشتم .
میخواهم وقتی کاربر بر روی اون کلیک کرد مستقیم با پاوردی وی دی که از قبل کاربر بر روی سیستمش نصب کرده باز شود چون این فرمت باید با پاور دی وی دی اجرا بشه . در اوتوران نیز برنامه پاور دی و یدی هست و به کاربر اطلاع داده شده که این برنامه رو اول نصب کنه بعد بر روی فیلم کلیک کند .
یا یه کدک ساده ای برای بنده بزارین که فیلم رو با فرمت mpg با مدیا پلیر ویندوز باز کنه و یه کاری هم بکنم که هنگام لود شدن اوتوران این کدک اول در جای خودش کپی یا نصب شود و بعد برنامه لود بشه .
لطفا یه آموزش کاملی در این زمینه بزارین .
با تشکر خیلی زیاد
سلام دوستان .
باید ببخشید که کمی به شما دیر جواب دادم ! قرار بود که دیگه به فروم سر نزنم ! ولی دیدم که بهتره سوال شما بی پاسخ نمونه !
برای اینکار ، شما ابتدا ، باید مسیر برنامهی PowerDVD ی نصب شده در سیستم شخص رو بدونید ! که برای اینکار میتونید از ریجستری استفاده کنید ! و صد البته امکان دسترسی به Registry با MMB فقط در ویندوز XP و پایینتر از آن امکان پذیر هست !
حالا چون اکثر اوقات شرکت سازندهی PowerDVD ، نصب این برنامه را به شرکت نصابی InstallShield موکول میکند ، پس مسیر نصب برنامه در یک مسیر مشخصی از ریجستری است ! که آن مسیر مشخص در همین کلید پایین هست :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در کلید بالایی ، مسیر تمامی برنامههایی که در ویندوز نصب شدهاند وجود دارد ! و اول از هر چیزی ، برای اینکه قبل از اجرای هر فایلی (در اینجا مثلا فایل MPG در PowerDVD) ، باید مشخص شود که آیا برنامهی مجری آن فایل در سیستم وجود دارد یا نه !
که در این قسمت ما وجود کلید ریجستری برای برنامهی PDVDLaunchPolicy Application را مورد بررسی و تایید قرار میدهیم که اگر کلید این برنامه در این قسمت از ریجستری موجود باشد ، آنگاه میتوان دستوری برای اجرای فایلی در برنامهی PowerDVD را داد ! که دستور اجرای آن فایل ، همان دستور اجرای فایل MPG ای است که شما بحثش را کردید .
پس در MMB ما نیازمند دسترسی به ریجستری هستیم که متاسفانه این امکان در MMB وجود نداشت ! ولی خوشبختانه به دلیل وجود Plug-In ها در این برنامه ، این امکان حیاتی ، قرار داده شده که باز هم متاسفانه در سیستمعاملهای جدید ، مثل MS Vista و Se7en به دلیل امنیتی بودن ، MMB قادر به صادر کردن دستور به طور مستقیم به Registry را ندارد ! ... یعنی در کل دستکاری Registry در MMB فقط در سیستمعاملهای XP یا پایینتر امکان پذیر خواهد بود ( البته ناگقته نماند که این مطالب بر اساس امکانات آخرین نسخهی MMB یعنی 4.9.8.13 هست ، شاید احتمالا در نسخ بعدی این برنامه این امکان وجود داشته باشد )
حالا بریم سر اصل مطلب :
ما در بحثی که در پایین میکنیم ، از آخرین نسخهی MMB سال 2007 یعنی 4.9.8.13 و Plug-In ساخته شده و آماده به نام SmallPlugin استفاده خواهیم کرد. (پلاگین SmallPlugin در مسیر نصب برنامهی MMB در پوشهی Plugins وجود دارد .)
برای اینکه ، کار شما دقیق و درستتر و کاملتر شود ، باید به نحوی در ریجتستری کلیدی را ایجاد کنید که وجود یک برنامهی خاص مثلا پلیر یک فرمت خاص را چک کند ! که این کار اکنون برای این آموزش از دست ما خارج است ، چرا که باید یک فایل نصبی دیگر برای پاور دیویدی ایجاد کرد یا اینکه در حین نصب هر نسخه ، یک کلیدی خاص در ریجستری ایجاد کرد که این کلید نسخهی نصب شده را به ما اعلان کند ×
پس ؛ از یکی از کلیدها ریجستری که برای (CyberLink Video/SP Decoder (PDVD9 در حین نصب برنامه ایجاد میشود ، کمک میگیریم × که اگر کلید ریجستری این قسمت از ریجستری موجود باشد ، پس نتیجه میگیریم که Decoder فایلهای ویدوییی چون MPG هم نصب شده است ! و این یعنی اینکه ما اطمینان حاصل میکنیم که کاربر ، برنامهی PowerDVD ( یا لااقل Decoder فایل ویدوییی) را نصب کرده و میتوان با ان فایلهایی با فرمتهایی چون مثلا : MPG و ... را اجرا کرد .
حالا که اطمینان حاصل کردیم که برنامهی PowerDVD روی PC شخص کاربر نصب شده است ، پس ، به راحتی میتوان از طریق ویندوز برای اجرای فایلی از یک قسمت از هارد یا دیسک ، یک دستوری را صادر کرد .
مثال : ساخت یک برنامه با MMB که کارش کار با پلاگین ، SmallPlugin هست و دستور اجرای فایلی را به برنامهی PowerDVD نسخهی 9 میدهد .
در هنگام Load یک صفحه ، یا همان در قسمت بالا آمدن صفحهای (مثلا صفحهای که در آن صفحه، دکمههایی برای پخش فیلم قرار داده شده است ) شما باید کدهایی قرار دهید که این کدها وجود برنامهی PowerDVD را چک و بررسی کنند ! که برای اینکار از Registry commands (فرمانهای ریجستری) در SmallPlugin استفاده میکنیم .
ابتدا یک شیء Plug-In در صفحه قرار دهید و نامش را PlugIn بگذارید .
برای بررسی وجود یک کلید از ریجستری از دستورات زیر استفاده میکنیم :
این کدها را در قسمت کدهای Script در Page Properties قرار دهید .
قبل از هر چیزی این کدها را در اول صفحه قرار دهید ( این کدها فقط جنبهی توضیحی دارند و در کدهای بعد شاید استفاده شوند) :
دستورات دستهی صفر :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دستورات دستهی یک :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در قسمت $Path ما مسیر کلیدی از ریجستری را به صورت رشته (String) به متغیر نسبت میدهیم . که این کلید ، کلید زیر است :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که اگر این کلید ، موجود باشد ، پس یعنی اینکه برنامهی PowerDVD یا لااقل Decoder اش در رایانهی شخص نصب شده است !
بعد از قرار دادن مسیر کلید ، از کاما " , " استفاده میکنیم ، که عبارت بعد از این کاما در این قسمت ، برای این منظور است که در یک مسیر مثلا مسیر کلید بالا ، چه مقدار(Value)ای از چه کلیدی با چه نامی خوانده شود ! که در اینجا ما وجود مقدار رشتهای در FriendlyName را مورد بررسی قرار میدهیم.
در MMB باید برای مشخص شدن رشته -- همانطوری که در توضیحات قبلی داده شده است -- از کوتیشن " ' " (Quotation) استفاده کرد ، که در تمامی زبانهای برنامه نویسی جهان از Double Quotation استفاده میشود ، یعنی این کاراکتر " " " .
حال از دستور PluginSet برای مشخص کردن مسیری که در متغییر رشتهای $Path قرار داده شده است ، استفاده مکنیم .
از تابع SetRegistryPath که در پلاگین SmallPlugin قرار داده شده است ، برای دادن مسیر و Set کردن آن استفاده میکنیم . که این تابع با دستور PluginRun اعلان میشود.
حال میخواهیم بدانیم که آیا مقداری در این کلید در ریجستری موجود هست یا نه ! ؟ ... پس ، از دستور PluginRun با مشخص کردن تابع RegistryValueExist برای بررسی وجود داشتن مقدار دوباره استفاده میکنیم ؛ که اگر مقدار موجود باشد ، تابع مقدار 1 را بر میگرداند و اگر موجود نباشد مقدار 0 را .
در برنامه نویسی به زبان MMB ، عدد 1 در حکم متغییر بولی TRUE است و عدد 0 هم در حکم False است .
از دستور PluginGet برای گرفتن نتیجهی وجود مقدار استفاده میکنیم که داخل این دستور متغیری را نیز به نام Result تعریف میکنیم .
بعد از اینکه مقدار برگشت داده شد ، ما از یک دستور شرطی که در MMB هم وجود دارد استفاده میکنیم :
بعد از دستورات دستهی یک ، این دستورات را نیز اضافه کنید :
دستورات دستهی دو :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همانطوری که متوجه شدهاید دیگر بعد از بررسی شرط ننوشتیم که اگر Result درست باشد این کار را بکن ، چرا که قرار ندادن شرط TRUE بودن ، به منزله قرار دادنش هست ! یعنی بین این دو دستور زیر هیچ تفاوتی نیست :
بین این دستور :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و این دستور :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
هیچ تفاوتی نیست .
این کد شرطی بررسی میکند که اگر مقدار در کلید ، موجود باشد کارهایی را انجام میدهد و در غیر این صورت کارهای دیگری را .
حال یک دکمهای را ایجاد کنید که برای پخش فیلم به کار رود :
این کدها را به آن نسبت دهید :
دستورات دستهی سه :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این کدها ، فقط بر روی PowerDVD نسخهی 9 قابل اجراست ! چرا که PowerDVD در تمامی نسخههایش کلیدهای ریحستری ثابتی برای مشخص کردن محل نصبش ندارد ، مثلا رجستری نسخهی 9 در کلیدی است که انتهای نامش PowerDVD9 هست یا ریجستری نسخهی 7 در کلیدی است که انتهای نامش PowerDVD7 هست و هم در نسخههای دیگر ، نامهایشان متفاوت است . پس ، نمیتوان از روی کلیدهای ریجستری که PowerDVD برای نسخههایش استفاده میکند ، استفادهی کلی برد !
پس وقتی که شخص PowerDVD نسخهی 9.00 را نصب کرده باشد ، این کدها به درستی اجرا خواهند شد .
برای دادن پارامتر به یک فایل exe میتوان از دستور Run استفاده کرد . در این دستور در قسمت Path اش ، مسیر فایل exe ای که قرار است با یک پارمتری خاص اجرا شود را قرار میدهیم که در مثال ، مسیر فایل exe همان مسیر فایل pdvdlaunchpolicy.exe است . ( این فایل در محل نصب PowerDVD9 موجود هست .)
پارامتری که به این exe داده شده است از طریق متغیر رشتهای $FileDir است ، شما باید یک مسیری را به متغیر $FileDir نسبت دهید که این مسیر همان مسیر فایل MPG ی شماست .
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همین دوست عزیز .
با اینکه توضیحات زیاد بودند ، ولی حجم توضیحات کم بود .
چون شما فرموده بودید که توضیحات کامل بدم ، توضیحات کمی زیاد شد ولی ممکنه توضیحات از خیلی جهات ایراد داشته باشن ولی کدها درست هستند . فقط دوستان اهل فن ، خواهشا اگر احتمالا اشکالاتی وجود داشت ، به طور خصوصی من رو در جریان بذارید .
دوستان اگر دیدید که به سوالات شما جواب داده نمیشه (از طرف من) ، بدونید که حتما من چندین وقتی میشود که به فروم سر نزده ام .