【问题标题】:Delphi, chromium, tabs and flash troubleDelphi,铬,标签和闪存问题
【发布时间】:2013-06-22 16:12:56
【问题描述】:

所以我有这个项目,我需要在其中运行 Flash 页面的几个选项卡 (TPageControl),并在不切换活动选项卡的情况下不时抓取它们的屏幕截图。 首先,我尝试了 TChromiumOSR,但其中看不到 flash,如果我单击页面的按钮打开一个弹出窗口并最大化 flash。所以它看起来不像是闪光灯的问题,而是帧或某事的问题。无论如何是不行的。

然后我尝试了 TChromium,一切正常,但我不知道如何在不切换选项卡的情况下抓取非活动 TTabSheet 上的控件的屏幕截图。

使用最新的 dcef3 中继

有什么想法吗?谢谢

编辑:事实证明,在 OSR 中不可见 flash 是一个旧的铬错误。如果嵌入代码将“wmode”设置为“透明”以外的其他内容,它实际上正在播放但不可见。我已经设法通过 js 更改了该属性。要真正看到变化,需要从 DOM 中删除 flash 对象并再次添加:

  chr1.browser.GetFrame(str[i]).ExecuteJavaScript('document.getElementsByName("wmode")[0].value="transparent";', '', 0);
  chr1.browser.GetFrame(str[i]).ExecuteJavaScript('document.getElementsByName("wmode")[1].value="transparent";', '', 0);
  chr1.browser.GetFrame(str[i]).ExecuteJavaScript('var wtf = document.getElementById("gameApp2");', '', 0);
  chr1.browser.GetFrame(str[i]).ExecuteJavaScript('document.getElementById("gameApp2").remove();', '', 0);
  chr1.browser.GetFrame(str[i]).ExecuteJavaScript('document.body.appendChild(wtf);', '', 0);

【问题讨论】:

  • 我看到有一个类型库“Shockwave Flash”,如果你让 Delphi 创建一个围绕它的 ActiveX 包装器并将它放在你的表单上,它会起作用吗?
  • 不是真的,我正在自动化一个 Flash 游戏,它需要作为包含所有 cookie 和内容的网页运行
  • 你试过 TWebBrowser 吗?在使用 OleDraw 之前,我已经成功地从中获取了快照:msdn.microsoft.com/en-us/library/windows/desktop/…
  • 我以前用过它,但它缺乏自动化鼠标和键盘的能力,而且它不像铬那样便携。看起来我终于对 osr 工作感到满意了

标签: delphi chromium delphi-xe3 chromium-embedded


【解决方案1】:

如果选项卡没有显示(它不是前面的),它就不会被绘制(这是操作系统的问题)。如果它没有被绘制,则没有任何东西可以捕获屏幕截图。

如果您的要求是在不显示的情况下捕获 Flash 页面,那么您将不得不找到另一种方法。

【讨论】:

  • 我仍然希望通过屏幕外渲染模式来实现这一点,因为浏览器使用 TPaintBox32 的画布,并且无论控件是否可见,都应该调用“paint”。
【解决方案2】:

假设你的 Chrome 仍然基于 WebKit,我知道 WebKitGTK 有它自己的快照引擎,如果它足够深入,也许你可以利用它来捕获。

在某一时刻,TPageControl 存在一个行为问题,即在选择选项卡之前,其子项都没有创建有效句柄。我不知道是否仍然如此,但如果是这样,可能会使您不想切换标签的愿望变得复杂。

假设控件有一个有效的窗口句柄,您可以创建一个 TBITMAP,锁定它的画布,抓住画布的句柄 (DC) 并为控件伪造一个 WM_PAINT 以使其渲染到您的位图。

【讨论】:

  • 当 TChromiumOSR 修复后,我现在可以抓取控制的画布/位图。还是谢谢
猜你喜欢
  • 2020-12-26
  • 2013-03-27
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多