【发布时间】: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