پلاگین EasyFileTypeCreator

BlueMMB

Well-Known Member
Header.gif


سلام به همه دوستان .
مقدمه : امروز با اجازه پلاگین سازای با تجربه و قدیمی می خوام اولین پلاگینم رو ارائه بدم البته همین اول کار جا داره از آقای محسن فرهادی عزیز ( Free Man ) تشکر ویژه ای رو بکنم چون از مثال های ایشون روش ساخت پلاگین رو یاد گرفتم . یه توضیحم بدم که سعی کردم کار پلاگین متفاوت با بقیه باشه یعنی هدفش فقط ساده تر کردن کدهاست و حذف کردن نوشتن کدهای طولانی با پلاگین های رجیستریه .
پلاگین EasyFileTypeCreator: همونطور که از اسمش معلومه برای شناسوندن و ساخت یه فرمت جدید از فایلا برای رجیستری ویندوز استفاده میشه مثلا شبیه فایل های .mbd ، .mp3 و ... . البته این پلاگین تفاوتی که با بقیه پلاگینا داره اولا فقط یه کار انجام میده و ثانیا نیازی به دستور PlugInRun نداره . درسته که با فایل بیلدر کنار پلاگین میشه براحتی کد رو برای استفاده از پلاگین درست کرد ولی با این حال روش اسفاده از پلاگین رو تا جایی که می تونم ساده و قابل فهم برای همه عرض می کنم .
استفاده از پلاگین : برای استفاده از این پلاگین فقط کافیه یه متغیر رشته ای رو براش ارسال کنید که فرمولش به این شکله :

کد:
[LEFT][FONT=Times New Roman][SIZE=2]Set$='Error Check | New Type Name | Key Name | Icon | CommandCaption1 | Command1 | CommandCaption2 | Command2 | ... | CommandCaption[n] | Command[n] |'[/SIZE][/FONT][/LEFT]
مثلا فرض کنید یه برنامه حسابداری دارید که می خواید براش نامه هایی از پیش آماده درست کنید و اطلاعات نامه ها رو تو یه فایل ذخیره بکنید به طوریکه کاربر بتونه بدون نیاز به وارد شدن به برنامه ، نامه ها رو باز کنه و بهشون نگاه کنه یا تغییراتی رو توی نامه ها ایجاد کنه یا مستقیما پرینتشون بکنه :
1 - برای اینکار شما باید یه فرمت خاصی برای نامه ها انتخاب کنید و اون رو به رجیستری ویندوز بشناسونید به عنوان مثال من فرمت جدید رو .ltr ( مخفف Letter ) در نظر میگیرم و یه توضیح مختصر راجع به فایل ها اون رو هم MyLetter در نظر می گیرم که به شکل یه کلید تو رجیستری ساخته میشه و اطلاعات از توی اون خونده میشه .
2- گفتیم که کاربر یا به فایل ها نگاه کنه یا تغییراتی توشون ایجاد کنه یا حتی سریعا چاپشون کنه . با این اطلاعات باید سه تا آیتم رو به راست کلیک فایل ها اضافه بکنیم ( سه تا Command براش تعریف کنیم ) که به ترتیب میشن Open ، Edit ، Print .
3 - حالا باید یه آیکون رو برای فایلهامون انتخاب کنیم که دو حالت پیش میاد :
الف ) آیکون خود فایل اجرایی رو که قراره نامه ها رو باز بکنه انتخاب بکنیم :

کد:
[LEFT][FONT=Times New Roman][SIZE=2]"C:\Program Files\Hesabdari\LetterOpener.exe",0[/SIZE][/FONT][/LEFT]
ب ) یه آیکون عادی رو براش انتخاب بکنیم :

کد:
[LEFT][SIZE=2][FONT=Times New Roman]"C:\Program Files\Hesabdari\Letter.ico"[/FONT][/SIZE][/LEFT]
4 - برای پلاگین تعیین کنیم که اخطار ها رو به ما بگه یا نه ( ErrorCheck = True\False ) :
در صورتی که با True مقدار دهی بشه پیغامهای خطای پلاگین می تونن تو دو مورد ایجاد بشن :
الف ) فرمت تعیین شده قبلا تو رجیستری وجود داشته باشه (Selected Type Exist In Registry)
ب ) کلیدی که انتخاب شده قبلا تو رجیستری وجود داشته باشه (Selected Key Name Exist In Registry)
اگرم با هیچ کدوم از گزینه های بالا مواجه نشد پیغام (New Type Created Successfully) رو میده .
5 - با اطلاعات بالا این کد رو می نویسیم :

کد:
[LEFT][FONT=Times New Roman][SIZE=2]Set$='True|.ltr|MyLetter|"C:\Program Files\Hesabdari\LetterOpener.exe ",0|&Open|" C:\Program Files\Hesabdari\LetterOpener.exe" Open "%1"|&Edit|" C:\Program Files\Hesabdari\LetterOpener.exe" Edit "%1"|&Print|" C:\Program Files\Hesabdari\LetterOpener.exe" Print "%1"|'[/SIZE][/FONT]
[FONT=Times New Roman][SIZE=2]PlugInSet("PlugIn","Set$")[/SIZE][/FONT]
[FONT=Times New Roman][SIZE=2]PlugInGet("PlugIn","Get$")[/SIZE][/FONT]
[FONT=Times New Roman][SIZE=2]Message("Get$","")[/SIZE][/FONT][/LEFT]
....................................................................................
تذکر : به هیچ وجه قسمت های مشخص شده در فرمول رو خالی نذارید .
....................................................................................
تست شده ر ویندوزهای : XP - Seven
از دوستان خواهش می کنم اگه اشکالی رو دیدن حتما متذکر بشن یا اگه پیشنهاد یا انتقادی یا نظری دارن من منتظر شنیدنشون هستم .


برای دانلود فایل می تونید از این لینک استفاده بکنین .
 

پیوست ها

  • Registry.gif
    Registry.gif
    3.4 کیلوبایت · بازدیدها: 13
  • Commands.png
    Commands.png
    42.8 کیلوبایت · بازدیدها: 13

alimaya

Active Member
سلام. ممنون و خسه نباشید به خاطر پلاگین خوبتون. فقط من یه سوالی برام پیش اومده. میشه بگید که اگه روی فایلای رجیستر شده با این پلاگین کلیک بشه، میشه کاری کرد که یه پارامتر (مثل آدرس فایل) به برنامه ارسال بشه یا آدرس فایل تو رجیستری ثبت بشه و بعد توسط برنامه ما خونده بشه؟
 

BlueMMB

Well-Known Member
سلام .

خب بله دوست عزیز یعنی مهم ترین کار این پلاگین ( در حالت کلی فرمت های تعریف شده تو رجیستری ) ارسال آدرس فایل به برنامست . همون عبارت "1%" که در Command ها قرار داره برای ارسال آدرس فایل باز شدست و کلمه قبل از اون مثل Open , Edit یا Print یا هرچیز دیگه ای که بنویسید هم میتونه به برنامه بگه که کدوم مورد از منو راست انتخاب شده .

برای یادگیری این که چطوری می تونید پارامترهای ارسالی به برنامرم بخونید می تونید از مثالی که خود بیلدر داره استفاده بکنین :

C:\Program Files\Multimedia Builder498\Samples\496_examples\cmdline.mbd

ازش exe بگیرین و با cmd یا همین پلاگین یه فرمتی تعریف کنین که به جای آدرس اون نرم افزار حسابداری که تو مثال بالاست از آدرس فایل exe گرفته شده استفاده کنه و آزمایشش کنین .

{شرمنده سر کارم و سرم شلوغه خودم نمی تونم براتون مثال بسازم ولی اگه از این مثال چیزی دستگیرتون نشد بگین برا دفعه بعد یه مثال بسازم }
 

alimaya

Active Member
عرض سلام دوباره خدمت دوست گلم. ممنون به خاطر پاسختون. من اون مثال رو بررسی کردم و تقریبا فهمیدم پارامترا چطور توسط برنامه دریافت میشن. ولی هنوز یکم گیجم! مثلا تو مثال پست اول شما هنگام راست کلیک روی فایل و مثلا انتخاب Edit دو تا پارامتر به برنامه ارسال میشه یا یکی؟ اگه دو پارامتر ارسال میشه آیا اونا تو دوتا رشته به این صورت
کد:
[CmdLineParam$[1
[CmdLineParam$[2
ذخیره میشن؟ و اگه یه پارامتر ارسال میشه، گزینه Edit و آدرس فایل با چه کاراکتری از هم جدا میشه؟ و اگه برنامه ما با وقفه زیاد(مثلا 10 ثانیه) باز بشه آیا بازم پارامترا بهش ارسال میشن یا نه؟ بگذریم! اگه لطف کنید و بگید که چطور و با چه کدی تو شروع برنامه میتونم پارامترای ارسالی رو دریافت کنم ممنون میشم. مثلا برای همین مثال خودتون در بالا چطور میشه پارامترای ارسالی Open، Edit یا print رو دریافت کرد؟
 
آخرین ویرایش:

+Mohammad+

Well-Known Member
بابت بلاگین خوبت بهت تبریک می گم
تو توی انحمن مولتی مدیا بیلدر هم فعال بودی
حالا ایشالا اینجا هم ازت استفاده بکنیم
ایشالا موفق و پیروز باشی
 

BlueMMB

Well-Known Member
عرض سلام دوباره خدمت دوست گلم. ممنون به خاطر پاسختون. من اون مثال رو بررسی کردم و تقریبا فهمیدم پارامترا چطور توسط برنامه دریافت میشن. ولی هنوز یکم گیجم! مثلا تو مثال پست اول شما هنگام راست کلیک روی فایل و مثلا انتخاب Edit دو تا پارامتر به برنامه ارسال میشه یا یکی؟ اگه دو پارامتر ارسال میشه آیا اونا تو دوتا رشته به این صورت
کد:
[CmdLineParam$[1
[CmdLineParam$[2
ذخیره میشن؟ و اگه یه پارامتر ارسال میشه، گزینه Edit و آدرس فایل با چه کاراکتری از هم جدا میشه؟ و اگه برنامه ما با وقفه زیاد(مثلا 10 ثانیه) باز بشه آیا بازم پارامترا بهش ارسال میشن یا نه؟ بگذریم! اگه لطف کنید و بگید که چطور و با چه کدی تو شروع برنامه میتونم پارامترای ارسالی رو دریافت کنم ممنون میشم. مثلا برای همین مثال خودتون در بالا چطور میشه پارامترای ارسالی Open، Edit یا print رو دریافت کرد؟

سلام دوباره.
:)همین اول کار از حواس پرتی خودم گله کنم که دارم تو انجمن آپادانا با بیلدر جوابتون رو میدم ! (اگه جوابتون رو تو نرم افزار آپادانا می خواین بهتره از آقا جاوید (JavidX ) کمک بگیرین .)

راستش من همون روز رفتم تو خونه اون مثال رو چک کردم یه ایراد جرئی داره والا درست کار می کنه و برای حلش کافیه برید به MasterTopLayer و اسکریپت CBK_CMd... رو باز کنین . یه دستور LoadText هست که تو آرگومان دومش دوتا دونقطه گذاشته یکیش رو حذف کنین و پروژه رو ذخیره کنین حالا اگه همون کار قبلی رو بکنین جواب میده و خودتون میبینین که اون دو تا پارامتر ارسالی تو لیست باکس نمایش داده میشن .

البته یه توضیح کوتاهم درباره پارامترهای ارسالی به برنامه ها بدم :
1 - بعد از آدرس فایل اجرایی هر چیزی که بنویسین یه پارامتر محسوب میشه .
2 - پارامترها بوسیله فاصله از هم جدامیشن .
3 - بنا به شماره 2 : اگه تو یه پارامتر ارسالیتون فاصله وجود داشته باشه برای این که اون ها از هم جدا نشن و مجزا محسوب نشن اونا رو باید تو " " بنویسین ( مثل همون آدرس فایل باز شده که چون احتمال وجود فاصله توش وجود داره باید اینجوری نوشته بشه : "1%" )
4 - تا اونجایی که من می دونم تعداد پارامترها محدودیت ندارن پس لازم نیست مثل مثال نوشته شده دو تا پارامتر ارسال بشن و همینطور ترتیبشون هم مهم نیست و بسته به سلیقتون داره .

در مورد اون زمانی هم که گفتین باید بگم اصلا دخالتی تو پارامترهای ارسالی نداره .

امیدوارم مشکلتون حل بشه . یا علی .
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا