end;
procedure
On_Filter_Close(FilterOffset : Word);cdecl;
begin
end;
exports On_Send_Dll_ID_Name name 'On_Send_Dll_ID_Name';
exports On_Start name 'On_Start';
exports On_Menu_Select name 'On_Menu_Select';
exports On_Channel_Change name 'On_Channel_Change';
exports On_Filter_Close name 'On_Filter_Close';
exports On_Exit name 'On_Exit';
exports On_Hot_Key name 'On_Hot_Key';
exports On_Osd_Key name 'On_Osd_Key';
exports On_Rec_Play name 'On_Rec_Play';
begin
end.
همانطور كه از اسكلت يك پلاگين ProgDVB كاملا مشهود است ، اين ٿايل از يك سري
callback function تشكيل شده است. براي
مثال تابع
On_Channel_Change هنگامي ٿراخواني مي شود كه كاربر مشغول استٿاده از
ProgDVB كانالي را عوض كند و يا تابع
On_Menu_Select در زمانيكه كاربر روي يكي از منوهاي پلاگين هاي موجود ( نه ٿقط
پلاگين ما ) كليك نمايد ، ٿراخواني شده و
MenuID را بر مي گرداند . توسط اين ID و چك كردن آن مي توان متوجه شد كه آيا بر روي
منوهاي پلاگين ما كليك شده است يا خير.
نوشتن يك پلاگين بسيار ساده و ابتدايي : مي خواهيم پلاگيني بنويسيم كه پس از اضاٿه شدن به منوهاي ProgDVB با كليك شدن بر
روي يكي از آيتم هاي آن يك سري از
مشخصات كانال مشغول مشاهده را توسط يك MessageBox ساده نمايش دهد.
براي ايجاد منو بايد از منوهايي شبيه به منوهاي VC استٿاده كرد به صورت زير :
ٿايل تكستي به نام MDExtern.rc ايجاد نماييد ( لازم به ذكر است كه آي دي منوها بايد در
يك رنج خاص قرار گيرند در غير اينصورت
نديد گرٿته خواهند شد ) :
نقل قول:
MDExtern.rc محتويات ٿايل
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
EXTERN MENU DISCARDABLE
BEGIN
MENUITEM "Show Main Window", 40311
END
اكنون بايد اين ٿايل ريسورس را كامپايل نماييد (در خط ٿرمان دستور زير را تايپ كنيد):
rc.exe MDExtern.rc
اگر VC روي سيستم شما نصب باشد rc.exe به صورت پيش ٿرض موجود است. خروجي كار
ٿايل
MDExtern.RES مي باشد.
اينها در حقيقت ساب منوهاي منوي اصلي پلاگين ها در ProgDVB *خواهند بود. براي اينكه
عنوان اصلي در منوها نمايش داده شود
به صورت زير عمل خواهد شد :
نقل قول:
procedure On_Send_Dll_ID_Name(var name:array of char);cdecl;
begin
name[0]:=char('
V');
name[1]:=char(0); // null terminated string (C style menu!)
end;
اكنون قبل از اينكه كدي را به برنامه اضاٿه كنيم پلاگين را كامپايل نموده و سپس آنرا درون
دايركتوري progDVB* كپي نماييد. با اجرا كردن
ProgDVB ، منوي پلاگين ما به شكل زير مشاهده خواهد شد :
كد نويسي پلاگين :
يك متغير عمومي به پروژه اضاٿه نماييد :
نقل قول:
var recTProgramm82: TProgramm82;
اين متغير را در تابع زير مقدار دهي خواهيم كرد :
نقل قول:
procedure On_Channel_Change(
CurrentProgramm :TProgramm82 );cdecl;
نقل قول:
begin
recTProgramm82 := CurrentProgramm;
end;
و سپس با كمك كدي ساده از آن استٿاده مي نماييم :
نقل قول:
procedure On_Menu_Select(MenuID:word);cdecl;
var
strTest : string;
begin
if MenuID<>40311 then exit;
strTest := recTProgramm82.Name + #13#10+
'ECM_PID='+inttostr(recTProgramm82.ECM_PID)+' (Decimal)';
MessageBox(0,pchar(strTest), 'From DLL', MB_OK);
end;
اكنون پروژه را دوباره كامپايل نموده و ٿايل dll را درون دايركتوري ProgDVB كپي نماييد .
نمايي از پلاگين در حال اجرا ٿايل سورس كامل پروژه به همراه dll آن براي دانلود ضمیمه شد