【问题标题】:imagegrabwindow opens two windows and grabs the wrong screenshotimagegrabwindow 打开两个窗口并抓取错误的屏幕截图
【发布时间】:2013-02-24 18:51:16
【问题描述】:

我想在本地 Vista 机器上使用 PHP 截取屏幕截图。 对于初学者,我只想设置标准示例:

$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Navigate("http://www.libgd.org");
/* Still working? */
while ($browser->Busy) {
    com_message_pump(4000);
}
$im = imagegrabwindow($handle, 0);
$browser->Quit();
imagepng($im, "iesnap.png");
imagedestroy($im);

当我运行脚本(命令行)时,它会打开两个 IE 窗口。一个(第一个)保持为空,第二个转到指定的 URL。截取并保存屏幕截图并关闭第一个窗口。转到 URL 的窗口保持打开状态。截图本身取自第一个空的 IE 窗口。

如何定位第二个窗口?

-- 编辑#1-- 在 Breakthrough 的所有帮助之后,它仍然无法在我的系统上运行。 :( 现在我将尝试使用http://iecapt.sourceforge.net/http://cutycapt.sourceforge.net/ 来解决它,这两种方法在初步测试期间似乎都有效。 我仍然对“真正的”PHP 解决方案感兴趣。

【问题讨论】:

    标签: php screenshot


    【解决方案1】:

    您使用的是哪个版本的 IE(7 或 8)?

    当您设置 $browser 的 Visible 属性导航到页面后会发生什么?

    -- 针对评论进行编辑--

    转到开始 -> 运行,然后输入“services.msc”

    在列表中,确保服务器服务和远程过程调用 (RPC) 服务都设置为自动。另外,请确保将远程过程调用 (RPC) 定位器服务设置为手动...

    尝试一下,让我们知道会发生什么。 :)

    -- 编辑#2--

    在您的 php.ini 文件中,确保 com.allow_dcom 设置为“1”。

    【讨论】:

    • IE: 7.0.6001.18000 如果我在导航后移动可见,只会打开一个浏览器窗口。没有截图,我得到一个错误(行号被编辑以匹配上面的例子): PHP 致命错误:未捕获的异常 'com_exception' 和消息'错误 [0x800706ba] RPC 服务器不可用。在 test.php:6 堆栈跟踪:#0 test.php(6): unknown() #1 {main} 在第 6 行的 test.php 中抛出
    • 转到开始 -> 运行,然后在列表中输入“services.msc”,确保服务器服务和远程过程调用 (RPC) 服务都设置为自动。另外,请确保将远程过程调用 (RPC) 定位器服务设置为手动...尝试一下,让我们知道会发生什么。 :)
    • 我的设置已经按照您描述的方式进行了设置。无需进行任何更改。仍然遇到同样的错误。
    • 在您的 php.ini 文件中,确保将 com.allow_dcom 设置为“1”。
    • 设置为“不为 1”?将值设置为“1” - 如果未设置,则默认为 0。
    【解决方案2】:

    对我来说也不起作用,但我设法让它工作但不知道它什么时候起作用,我想这与交互式服务检测中出现的消息有关,如果我点击查看消息并做某事在 Internet Explorer 屏幕中,它得到了一次截图,总之就是一个大 S***

    【讨论】:

      猜你喜欢
      • 2012-05-12
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 2011-06-12
      相关资源
      最近更新 更多