【问题标题】:What web browser must to do? [closed]什么网络浏览器必须做? [关闭]
【发布时间】:2014-02-12 18:35:09
【问题描述】:
  • 我加载 Flash Player (NPSWF32_12_0_0_44.dll)
  • 下载html页面并获取标签参数:
    • id="flashcontent"
    • type="application/x-shockwave-flash"
    • data="http://foo/foo2.swf?123456"
    • width="800"
    • height="600"
  • 创建实例(使用 参数)。
  • 处理NPN_GetUserAgent(我使用我的应用名称作为代理名称)和NPN_GetValue 调用(提供HWND 并将私有模式设置为false)。

问题: Flash Player 必须调用NPN_GetUrl 或其他方法来请求"http://foo/foo2.swf?123456",或者我必须通过创建流来执行此操作(下载资源时)?

  • 无论如何,我下载此资源并调用NPP_NewStream,然后使用NPP_WriteReadyNPP_Write 为插件提供资源。
  • 处理NPN_GetUserAgent 电话(再次)并收到2 电话NPN_GetUrl
    • 首先:
      • 网址:javascript:top.location+"__flashplugin_unique__"
      • 窗口:NULL
    • 第二:
      • 网址:javascript:window.location+"__flashplugin_unique__"
      • 窗口:NULL

问题:我必须做些什么来处理这个 url 请求?为什么我的窗口,我给插件的 HWND,在这个阶段不是他画的?

Mozilla 文档说:

如果“window”为空,浏览器会创建一个新流并将数据传送到当前实例,而不管 URL 的 MIME 类型是什么

问题:插件请求javascript是什么意思?如何为此创建一个虚拟处理函数?

【问题讨论】:

  • 为什么选择嵌入Mozilla的插件?我已经使用 IE 的 ActiveX 插件成功地将 Flash 和 Shockwave 嵌入到我的应用程序中。与 NPP 不同的是,ActiveX 技术成熟、稳定,而且 SDK 非常好:只需几行代码就可以在 ATL 中嵌入一个 ActiveX,而且 SDK 中有很棒的工具,例如 ActiveX 文本容器和 OleView。
  • @Soonts,我可以使用 ActiveX 插件和 ATL 在 mime 类型“application/x-shockwave-flash”的网页上正确打开对象吗?
  • “在网页上”是什么意思?如果您打开了一个网页,则意味着您已经有一个网络浏览器,并且您不需要在代码中嵌入 Flash 插件。如果您要从其他人的页面窃取 SWF,请注意这是非法的。此外,这些 SWF 的开发人员可以采取措施防止这样做,无论您将使用哪个版本的闪存,NPAPI 或 ActiveX。
  • 我只是尝试打开一些用于制作AI的网页游戏,它会做一些重复的动作而不是玩家。做那个工具对我来说很有趣。

标签: c++ flash npapi


【解决方案1】:

我认为嵌入 ActiveX 而不是 Netscape 插件会容易得多。

Here's a step by step guide 如何将 Flash 影片嵌入到基于对话框的 C++ MFC 应用程序中。

该指南适用于旧版本的 Visual Studio。在 VS 2012 中,不是步骤“项目菜单,选择添加到项目子菜单,然后单击组件和控件”,而是打开对话框资源,右键单击对话框,“插入 ActiveX 控件”,然后选择“Shockwave flash object” .然后从步骤“右键单击对话框并选择“类向导”以调用类向导”恢复该指南。

附:从您的 HDD 中的一个简单 SWF 开始调试您的嵌入代码,然后再试验您的浏览器游戏..

【讨论】:

  • 谢谢,我会试试这个。
  • 不工作:CShockwaveFlash m_FlashPlayer void CFlashDisplayerDlg::OnClickedButtonPlay() { MessageBoxA(NULL, "Clicked!", "BOOM!", MB_OK); m_FlashPlayer.put_Movie(L"mammyblue2.swf"); m_FlashPlayer.Play(); } 消息框已执行,电影 - 不。
  • LoadMovie(0, L"C:\\Temp\\mammyblue2.swf")替换put_Movie(L"mammyblue2.swf")
  • 成功了!我在哪里可以找到CShockwaveFlash 概述?
  • 如何从 ActiveX 请求中获取数据?我如何监控这些请求?
猜你喜欢
  • 2012-10-30
  • 2015-01-07
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
  • 1970-01-01
  • 2010-10-23
  • 2010-09-07
相关资源
最近更新 更多