2011-12-16 63 views
1

我有一个代码,它通过PrintWindow函数捕获给定的窗口。具体来说,我在浏览器中捕获网页。此代码在独立的Windows应用程序中进行测试,并且工作正常。相同的代码被纳入NPAPI插件并加载到Google Chrome中。有问题发生。如果Chrome只有一个标签,则代码正常。如果Chrome有2个选项卡,代码会返回预期大小的黑色框。我在同一个窗口句柄(Chrome_RenderWidgetHostHWND)上同时测试了独立应用程序和插件。应用程序总是工作,如果在浏览器中打开多个选项卡,插件总是失败。PrintWindow在独立应用程序中工作,并部分在NPAPI插件中工作

我真的很感激,如果有人给出一个线索如何解决这个问题。

在此先感谢。

NB。其他捕获窗口的方法不适用,因为我的用例有更大的缺点。

回答

0

我敢打赌你会遇到沙盒问题。

您的应用很可能以“正常”完整性级别运行,因此在Chrome进程中发布WM_PRINTWM_PRINTCLIENT消息没有任何问题。 (PrintWindow使用这些消息)。

当你是Chrome的插件,我相信你的代码作为一个“低”的完整性过程(这减少了粉碎攻击的可能性)运行。因此,将消息发送到另一个进程中的窗口并不会让我感到惊讶。

不幸的是,这并不能解释Chrome浏览器只有一个标签时为什么会起作用。在打开多个选项卡的情况下,您是否在应用程序和插件中找到了相同的Chrome_RenderWidgetHostHWND实例?一般来说,每个选项卡都有一个这样的窗口。你怎么找到窗户?

+0

到目前为止,我还没有确定Chrome是否启动了低完整性模式的插件;我看到很多流言蜚语,但找不到任何具体的地方,也没有我在铬插件中遇到任何问题,而我通常可能与低廉的完整性相关联。 – taxilian 2011-12-17 05:26:48

相关问题