imagegrabwindow открывает два окна и захватывает неправильный скриншот - PullRequest
3 голосов
/ 19 августа 2009

Я хочу получить скриншот с помощью PHP и на моей локальной машине Vista. Для начала я просто хотел настроить стандартный пример:

$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.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2013

Для меня тоже не работает, но мне удалось, чтобы это работало, но я понятия не имею, когда это так, я думаю, это связано с тем сообщением, которое приходит из интерактивного обнаружения служб, если я нажимаю на просмотр сообщения и что-то делаю на экране Internet Explorer он получил один скриншот, всего один большой S ***

0 голосов
/ 19 августа 2009

Какую версию IE вы используете (7 или 8)?

Что происходит, когда вы устанавливаете свойство Visible для $ browser после перехода на страницу?

- РЕДАКТИРОВАТЬ В ОТВЕТ НА КОММЕНТАРИЙ -

Перейдите в Пуск -> Выполнить и введите "services.msc"

В списке убедитесь, что службы сервера и службы удаленного вызова процедур (RPC) настроены на автоматическое. Кроме того, убедитесь, что служба локатора удаленного вызова процедур (RPC) установлена ​​на ручную ...

Попробуйте и дайте нам знать, что происходит. :)

- РЕДАКТИРОВАТЬ # 2 -

В файле php.ini убедитесь, что для com.allow_dcom установлено значение "1".

...