2012-05-08 1 views
1

Я боролся с NPAPI для «хороших» примеров и «конкретных» документов (в Unix). У меня есть libflashplayer.so, на которых я могу иметь доступ к определенной информации, которая:Показать SWF-файл с NPAPI (на Xlib)

nm -D libflashplayer.so | more 

00000000005cc4e0 T FlashPlayer_11_2_202_235_FlashPlayer 
00000000005cc4a0 T Flash_DisableLocalSecurity 
00000000005cc4c0 T Flash_EnforceLocalSecurity 
00000000005ca870 T NP_GetMIMEDescription 
00000000005ca850 T NP_GetValue 
00000000005ca4d0 T NP_Initialize 
00000000005ca4c0 T NP_Shutdown 

Я легко проверил MIMEDescription, делая это. Который возвращает flash MIME.

static char* (*mNP_GetMIMEDescription)(void); 
//MAIN 
lib = dlopen("./libflashplayer.so", RTLD_LAZY | RTLD_LOCAL); 

*(void **) &mNP_GetMIMEDescription = dlsym(lib, "NP_GetMIMEDescription"); 
fprintf(stderr, "NP_GetMIMEDescription=%p\n", mNP_GetMIMEDescription); 
fprintf(stderr, "NP_GetMIMEDescription=%s\n", mNP_GetMIMEDescription()); 

//output 
NP_GetMIMEDescription=0x7f2d2239f870 
NP_GetMIMEDescription=application/x-shockwave-flash:swf:Shockwave Flash;application/futuresplash:spl:FutureSplash Player 

Теперь, я действительно потерял на том, чтобы сделать (или тест, откройте файл SWF) содержимое на Xlib окна. Во-первых, я делаю NP_INITIALIZE, который, как я считаю (из того, что я понимаю), обеспечивает глобальную инициализацию (особенно для NPNetscapeFuncs и NPPluginFuncs «экземпляр»). Затем начинается интересная часть. Мое предположение (с тем, что я читаю и понимаю, исправляю, если я ошибаюсь) должен был создать экземпляр моего плагина (с NPP_New) и после этого, установить мое окно (с NPP_SetWindow), чтобы связать мой экземпляр плагина и мое окно (от Xlib например ...)

ответ