آشنایی با Plug-In ها در نرم افزار MMB

پلاگین چيست؟


اكثر برنامه هاي امروزي اين قابليت را فراهم مي كنند تا كاربر بتواند از Plug-Inها استفاده نمايد. براي مدت هاي مديدي اين امكان فراهم نبود تا يك كاربر بتواند تعدادي توابع اضافه بر سازمان برنامه در اختيار داشته باشد و مي بايست تا نسخه بعدي برنامه صبر مي كرد. اما پس از چندي اشخاصي اين قاعده را شكستند و اين آرزوي كاربران را برآورده ساختند. پس از آن با تدوين استانداردها برنامه نويسان و توسعه دهندگان اجازه يافتند تا براساس ضوابطي توابع دلخواه خود را در صورت امكان به بدنه برنامه اصلي اضاف نمايند. به همين دليل اين امكانات و توابع اضافه نام plug-in را به خود گرفت. امروزه ميتوانيم ردپاي plug-In را در اكثر برنامه ها از قبيل برنامه هاي طراحي و ويرايشي و … ببينيم. اما حال ببينيم plug-In ها دقيقاً چه هستند و چگونه كار ميكند؟

ایستگاه فضایی مطمئناً همه ي شما ايستگاههاي فضايي را ديدهايد كه حول زمين در حال چرخش هستيد. حالا تصور كنيد كه MMB ساختار مركزي اين ايستگاه فضايي است. (شكل اول)

البته شايد شكل روبرو شبيه يك ايستگاه فضايي كامل نباشد چرا كه سلولهاي خورشيدي ندارد، اما به هر حال با تصوري كه از شكل بالا پيدا كرديد فرض كنيد كه ميتوانيد در اين ايستگاه فضايي به ادامه حيات و فعاليت بپردازيد. اما پس از مدتي احساس خواهيد كرد كه به امكاناتي اضافه احتياج داريد امكاناتي از قبيل اسباب راحتي و… اما نگران نباشيد اين احساس نياز از قبل پيشبيني شده و تنها كافيست كه وسايل را تهيه و با اتصال آنها به ايستگاه فضايمان را گسترش دهيم. حالا با استفاده از قابليت توسعه توانستيد فضايتان وقدرتان را بهبود بخشيد اما اگر بخواهيم به واقعيت نزديكتر شويم و قدرتمان را در MMB افزايش دهيم دقيقاً بايد چه كنيم؟
لازم نيست نگران باشيد تنها كافيست برنامه MMB و plug-In هاي مورد نظر را در اختيار داشته باشيد.اما حتماً از خود ميپرسيد plug-In هاي MMB چگونه هستند؟ بله plug-In هاي MMB تنها فايلي ساده با پسوند DLL هستند كه امكان دارد در حالت عادي پنهان شده (Hidden) باشند. ( ميتوانيد از قسمت Folder option ويندوز آنها را درصورت مخفي بودن نمايان سازيد. همچنين ميتوانيد در حين اجراي يك برنامه حاوي plug-In، plug-In آن را از شاخه temp ويندوزبيابيد). براي مثال فايلهاي posxy.dll, tweak.dll, misc.dll يكسري از plug-In هاي موجود هستند. اما اين plug-In ها را از كجا بايد تهيه كنيم؟ پاسخ ساده است شما ميتوانيد با استفاده از سايتهاي زير اقدام به تهيه آنها نماييد:

http://www.mmbforums.com

http://forum.majidonline.com/forumdisplay.php?&f=83

بسيار خب پس از اينكه plug-In هاي مورد نياز را جمع آوري كرديد وقت استفاده از آنهاست. ابتدا قبل از هركاري بايستي يك پنجره در صفحه پروژه براي plug-inبكشيم تا در ادامه اين پنجره به عنوان نگهدارنده فايل plug-In ما باشد. از منوي Object با انتخاب قسمت plug-In پنجره مورد نظر را ميكشيم .
برخي از plug-In ها هستند كه به صورت بصري عمل ميكنند.به عنوان مثال plug-In هايي كه جلوههايي نظير بارش برف و باران و حركت ستارگان را ايجاد ميكنند. بنابراين اين plug-Inها نياز به پنجرهاي مناسب و قابل ديد دارند، اما دركنار همين plug-In هاي بصري تعداد ديگري plug-In هم هستند كه بصري نيستند و نياز به پنجرهاي بزرگ و قابل ديد ندارند بلكه فقط وجود پنجرهاي كوچك در هر جايي براي آنها كافيست. پس از اينكه پنجره را ايجاد كرديد بر روي آن 2 بار كليك نماييد تا پنجرهاي همانند شكل ظاهر شود. (عكس دوم)

همانند ساير پنجره هاي خصوصيت براي اشياء ديگر گزينه هايLock position و Hide عمل مشابهي را انجام ميدهند و label ( برچسب) هم نام شيء Plug-In را مشخص مينمايد كه بايد اين نام را به خاطر بسپاريد. دروسط اين پنجره كادر ورودي هست كه كنار آن دكمهاي قرار گرفته كه توسط اين دكمه كادري تبادلي جهت مسيردهي فايل plug-In ظاهر ميشود. خب پس چرا منتظريد؟! دكمه را فشار دهيد… اگر هيچ plug-In اي را جهت مسير دهي نداريد به زيرشاخه plug-In از پوشه نصب برنامه MMB برويد و در آنجا يك Plug-In بصري به نام Tenblobs.dll راكه همراه برنامه MMB ارائه شده است را خواهيد يافت. بلافاصله پس ازاينكه Plug-In را برگزيديد ، پيغامي مبني براينكه آيا ميخواهيد Plug-In را الحاق نماييد؟ ظاهر ميشود. به آن پاسخ مثبت بدهيد.ديگر احتياجي نيست كه نگران اين فايل پس از اتمام پروژهاتان باشيد زيرا MMB تمام فايلهاي الحاق شده را به همراه فايل نهايي بستهبندي ميكند. پس از الحاق يك Plug-In پنجره خصوصيت به صورت شكل درميآيد.

باتوجه به شكل مسير منتهي به فايل Plug-In داراي ماكروي <Embedded> است كه پيشتر درباره اين ماكــــرو بحث كرديم. درزيـــر اين كادرمسـير، قسمتي است كه حـاوي اطلاعاتي از قبيل نام مؤلف Plug-In ،پست الكتريكي ، سايت و … مؤلف ميباشد.
اكنون دكمه ي ok را فشار دهيد تا عمل نصب Plug-In تمام شود. در اينجاست كه پس ازيكبار اجراي برنامه احساس ميكنيد كه چيزي كم است،بله درست فهميديد بر اساس ساير Plug-In هاي برنامههاي ديگر شما به اين تصور رسيدهايد. اما اگر Plug-In شما بصري باشد در كادر خصوصيت Plug-In قسمتي در بالا سمت راست كه درشكل نشان داده شده فعال ميشود كه ميتوانيد به آنجا برويد و تنظيمات موجود را تغييردهيد.

اما خصوصيات و كنترل Plug-In هاي غير بصري را چگونه ميتوان در دست گرفت؟ در اينجاست كه فرامين به كمك ما ميآيند. فراميني كه در دل اسكريپتهاي MMB جا خوش كرده اند.اما اجازه دهيد كه ببينيم در پشت پرده چه خبرست؟ همانطور كه گفتيم فايلهاي Plug-In برنامه MMB ،DLL هستند كه DLL مخفف عبارت Dynamic link library ( كتابخانه اتصال پويا ) است به اين معنا كه DLLها مجموعهاي از توابع و فرامين هستند.پس با اين تفاسير ارتباطي پويابين MMB و Plug-In ها برقرار است.اين ارتباط ميتواند به 3 صورت زير باشد:

1- تنظيم متغير در MMB و دريافت متغير عددي توسط Plug-In
2- تنظيم متغير در MMB ودريافت متغير رشتهاي توسط Plug-In
3- اجراي فرماني خاص كه ممكن است اين فرمان خروجي به همراه داشته باشد.


براي استفاده از Plug-In ها بايستي با مفاهيم متغيرها و نحوه استفاده از آنها آشنا باشيد.چنانچه اين گونه نيست از ادامه خواندن اين قسمت تا زمانيكه مفاهيم متغيرها را فراگيريد پرهيز نماييد. خب گذشته از اينها صورت پيشرفتهتر 3 حالت قبل به صورت زيردر مي آيد:

1- تنظيم پارامترها براساس متغيرها ( هميشه لازم نيست)
2- اجراي فرامين Plug-In براساس پارامترها
3- دريافت متغيرهاي خروجي پس از اجراي فرامين ( هميشه اينطور نيست)
3 حالت گفته شده زيربناي درك عملكرد Plug-In ها ميباشند. همانطور كه قبلاً گفته شد Plug-In هاي MMB بر 2 نوع هستند:

1- نوع غيربصري و قابل كنترل توسط فرامين 2- نوع بصري

غالب Plug-In هاي MMB (نزديك به 98%) ازنوع اول هستند كه محدوده فعاليت آنها در قسمت پنجره تعبيه شده است. باقي فعاليتها توسط فرامين داخل Plug-In صورت ميگيرد كه يا منجر به تغيير حالت Plug-In يا ارسال خروجي به متغيرها مي شود. اين نكته حائز اهميت است كه Plug-In هاي ازنوع اول تقريباً مستقل از MMB عمل ميكند و بر ساير اشياء حاضر در پروژه هيچ تاثير مستقيمي اعمال نميكنند. عدم تعامل با ساير اشياء ضعفي براي MMB شناخته ميشود كه شايد در نسخههاي بعدي برطرف گردد.نكتهي ديگري كه در خصوص نوع اول بايد گفت اينست كه نميتوان از يك Plug-In در 2 پنجره استفاده كرد در مفــهومي عامتر نــمي توان آنها را به اشـــتراك گذاشت. راهحل اين نقيصه استفاده از 2 Plug-In مشابه اما با نامهاي مختلف است.
همانطوركه شكل بالا نشان ميدهد دو Plug-In مشابه با نامهاي مختلف داريم كه اين نامها در جاي خود مهم است، چرا كه در ادامه توسط همين نامها و به مدد از فرامين از Plug-In ها استفاده ميكنيم. اما نوع دوم بصري هستند كه قبلاً راجع به آنها صحبت كرديم.شكل زير يك نمونه از PlugInهاي بصري است.

بگذاريد پس از شرح قسمتهاي مهم قبل به جمعبندي مطالبي كه تا كنون آموختيم بپردازيم:
– Plug-In ها همه جا هستند.
– قسمتهايي اضاف بر سازمان هستند.
– هدف Plug-In ها افزايش قابليت برنامههاست.
خب ديگر تئوري بس است.به جاست كه تمرين را شروع كنيم. گفتيم كه تنظيم خصوصيات Plug-In هاي نوع 1 توسط اسكريپت نويسي انجام ميشود. در زبان اسكريپتنويسي MMB، 3 فرمان مرتبط با Plug-In ها وجود دارد كه شما از آنها جهت ايجاد ارتباط بين MMB و Plug-In استفاده ميكنيد. اين فرامين به ترتيب در لیست زير بحث شده اند.

  • PlugInSet

اين فرمان جهت تنظيم پارامتر براي فرامين Plug-In ميباشد. اين فرمان پارامترها را كه همان متغيرهاي عددي و رشتهاي هستند را به فايل Plug-In ارسال ميكند و Plug-In آنها را ذخيره و بررسي ميكند .هر بار استفاده از اين دستور با يك متغير كه محتوايش تغيير كرده سبب جايگزيني محتوي جديد در فايل Plug-In مي شود.

  • PlugInRun

اين فرمان توابع و فرامين تعبيه شده در فايل Plug-In را براساس پارامترهاي تنظيم شده اجرا ميكند. چنانچه بخواهيد نام فرامين موجود در Plug-In را بدانيد به راهنماي همراه Plug-In مراجعه كنيد. البته هميشه Plug-In ها احتياج به پارامتر ورودي ندارند و يا در حالاتي هيچ مقدار خروجي توليد نميكنند و تنها سبب تغيير حالت Plug-In و انجام ساير فعاليتها ميشود.

  • PlugInGet

اين فرمان وظيفه دريافت مقدار خروجي كه با استفاده از فرمان PlugInRun توليد شده است را برعهده دارد.پس طبيعتاً اين فرمان پس از دستور PlugInRun استفاده ميشود.

مثال
اكنون 3 فرمان گفته شده را در كنار هم ميآوريم تا بتوانيم از Plug-In استفاده كنيم.

var$ = “text”
PlugInSet(“Plug-In” , “ var$”)
PlugInRun(“Plug-In” , “uppercase”)
PlugInGet(“Plug-In” , “var$”)
Message(“Output is:”,”var$”)

در بلوك كد بالا ابتدا محتوي متغير var$ توسط فرمان PlugInSet به Plug-In ارسال ميشود.سپس دستور PlugInRun بر اساس متغير دريافتي دستور مربوطه (uppercase) را اجرا ميكند ويك خروجي توليد مينمايد. در ادامه دستور PlugInGet مقدار خروجي را دريافت كرده و به MMB انتقال ميدهد.كه درآخر ميتوان از اين مقدار با استفاده از ساير فرامين سود جست. حالت گفته شده گونهاي بود كه Plug-In خروجي توليد كرد اما حالتي پديد ميآيد كه هيچ خروجي توليد نميشود،يعني اينكه احتياجي به استفاده از فرمان PlugInGet نيست.اين حالت براي مثال ممكن است براي مواقعي كه ميخواهيم اندازه يك فونت را تغيير دهيم پديد آيد. چيزهايي كه نياز است ،يكي اندازه نهايي فونت و فرماني جهت اجراي آن است و هيچ نيازي به خروجي نميباشد.اين گونه از ارتباط همانند مثال زير ميباشد.

مثال:

fontsize= 16
PlugInSet(“Plug-In” , “ fontsize”)
PlugInRun(“Plug-In” ,”Set fonts size”)

توجه كنيد كه فعلاً تمام اين Plug-In ها فرضي و مجازي هستند.

ممكن است گونههاي مختلفي در استفاده از فرامين MMB براي ارتباط با Plug-In ها پديد آيد و اين بستگي به نوع فرمان Plug-In دارد كه ميتوان از طريق راهنماي Plug-In آن را مشخص ساخت.
بگذاريد چون صحبت درباره راهنماي Plug-In شد،قدري راجع به آن صحبت كنيم. همانند ساير راهنماها، راهنماي Plug-In ها هم بسته به نياز حاوي تعدادي مثال هستند كه اين مثالها هدف اصلي هر دستور را نشان ميدهد و هميشه نميتوان با كپي و چسابدن آنها از راهنما به ويرايشگر اسكريپت انتظار عملكرد صحيح را از آنها داشت.گاهي اوقات لازم است كه با توجه به خطوط قبلي كد برنامه و براساس نيازمان كد اين مثالها را تغيير دهيم و نهايتاً از آنها استفاده كنيم. نكتهي ديگري را كه بايد يادآور شد اين است كه در غالب راهنماها بر چسب Plug-In ، PlugIn در نظر گرفته ميشود كه چنانچه بخواهيم نام ديگري داشته باشيم بايد در فرامين مرتبط با Plug-In اين برچسبها را تغيير دهيم.
اما در رابطه با حالتهاي به كارگيري 3 دستور قبل صحبت ميكرديم.حالتهاي ديگري هم كه ممكن است پديد آيد به صورت زير است:
الف) استفاده از يك دستور بدون هيچ ورودي و خروجي
ب) استفاده از يك دستور بدون مقدار ورودي
حالت الف ممكن است مواقعي پيش بيايد كه فرمان ما تنها عملي را بايستي انجام دهد براي مثال ويندوز را Shutdown كند.
حالت ب ممكن است مواقعي پيش بيايد كه فرمان Plug-In مستقلاً عمل كرده و مقدار خروجي توليد كند. مثلا هنگامي كه بخواهيم ساعت و تاريخ را دريافت كنيم.اگر پا را فراتر ازاين حالات بگذاريم حالتهاي ديگري به وجود ميآيد كه خود از تركيب چند حالت قبل پديد مي آيد،همانند مثال زير:
بلوك 1

کد:
var$ = “My computer is P4”
PlugInSet(“Plug-In” , “var$”)
PlugInRun(“Plug-In“ , “upper case”)
PlugInGet(“Plug-In” , “text$”)

بلوك 2

کد:
PlugInSet(“Plug-In” , “text$”)
PlugInRun (“Plug-In” , “Show message box”)

در مثال قبل ابتدا رشته در بلوك 1 به حالت بزرگ تبديل شده و به بلوك 2 ارسال ميشود تا در كادر پيغام نشان داده شود.
رابطهاي Plug-In و متغير تنها به يك انتساب ساده ازقبيل var$=myname منتهي نميشود.بلكه گاهي اوقات پيش ميآيد كه اين رشتهها توسط كاراكتري از هم جدا ميشوند مثلاً براي تعيين مقدار رنگ:
color$ = “220,150,105”
اين گونهها بر اساس تعاريفي كه از پيش در Plug-In به وسيلهي مؤلف آن آمده است پردازش و تجزيه ميشود.حالتهاي ديگري از اين قبيل انتسابها هم وجود دارند.

مثال:

Regkey $ = ‘softwareprogramsectionkeyname’
Flag$ = ‘con|yes no cancel|caption’
كنترل رويداد (Event Handing)

وقايع (Event): اتفاقات و توسعههايي هستند كه در Plug-In رخ ميدهند و به برنامه شما اطلاع داده مي شوند.
كنترل كننده رويداد: شيءهاي اسكريپت MMB هستند كه همانند نوعي شبكه وقايع را دريافت ميكند.
همانطور كه قبلاً خوانديد بعضي از فرامين مقادير خروجي توليد مي كنند اما برخي از Plug-In ها بلافاصله پس از دستور PlugInRun مقدار خروجي توليد نمي كنند. وظايفي از قبيل پردازش دادهها ، وقفههاي طولاني، رويدادهاي دورهاي و … سبب بروز چنين حالتي مي شوند. خب در اين صورت سؤال اينجاست كه Plug-In برنامه MMB چگونه در اين حالت با MMB به تعامل ميپردازد؟ جواب اينجاست كه خود Plug-In فشردن كليد يا كليدهايي را جهت ارسال اطلاعات به MMB شبيهسازي مي كند.

3 دیدگاه دربارهٔ «آشنایی با Plug-In ها در نرم افزار MMB»

  1. كن با اينترنت كانالهاي فارسي را مي بينم و از طريقglwizاكنون مرتب كانالها قطع و وصل ميشود و نياز به plug-inدارد از شما خواهش مي كنم براي نصب اين برنامه من را راهنمايي كنيد

    1. دوست من جناب مسعود،

      این پلاگینی که شما میخاید با این پلاگینی که ما بحثش رو کردیم زمین تا آسمون فرق داره و هر دو از برنامه هایی مجزا هستن. و هر پلاگینی اینطور نیست که به برنامه دیگری بخوره.

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *