Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Создать скриншот окна при его появлении (http://forum.oszone.net/showthread.php?t=220290)

vxor 12-11-2011 15:05 1793592

Создать скриншот окна при его появлении
 
Ждем окна с заголовком "Заголовок". При его появлении делаем его скриншот. Как реализовать?

Creat0R 12-11-2011 17:31 1793661

Код:

#include <ScreenCapture.au3>

$sTitle = "Заголовок"

$hWin = WinWait($sTitle)
WinActivate($sTitle)
WinWaitActive($sTitle)

_ScreenCapture_CaptureWnd(@DesktopDir & "\Screen.jpg", $hWin)


vxor 12-11-2011 21:49 1793821

Все отлично! Сработало так:
Код:

#include <ScreenCapture.au3>
$sTitle = "Заголовок"
$hWin = WinWaitActive($sTitle)
_ScreenCapture_CaptureWnd("c:\Screen.jpg", $hWin)

Но вскрылась проблема. Если окно видимо достаточно долго (около секунды) - все работает, а если оно появляется буквально на немного (доли секунд - появилось и тут же пользователь его закрыл нажатием ESC), то вместо скрина пустой файл-jpg c размером около 600 байт. Есть предположение что не успевает скрипт. Что делать в таком случае? Готов принять варианты не только на AutoIt.

Creat0R 12-11-2011 22:09 1793832

Цитата:

Цитата xor++
Что делать в таком случае? »

Уменьшить паузу ожидания окна:

Код:

Opt("WinWaitDelay", 0)
(добавить в начало скрипта, перед Win* функциями)

vxor 12-11-2011 22:29 1793852

Отлично!
Код:

Opt("WinWaitDelay", 70)
подошло. При 0 не успевает прорисовываться - скрин бракованный. При 100 я успеваю закрыть окно по ESC. При 70 ЗАРАБОТАЛО:)


Время: 18:21.

Время: 18:21.
© OSzone.net 2001-