Войти

Показать полную графическую версию : [решено] Создать скриншот окна при его появлении


vxor
12-11-2011, 15:05
Ждем окна с заголовком "Заголовок". При его появлении делаем его скриншот. Как реализовать?

Creat0R
12-11-2011, 17:31
#include (http://www.autoitscript.com/autoit3/docs/keywords.htm##include) <ScreenCapture.au3>

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

$hWin = WinWait (http://www.autoitscript.com/autoit3/docs/functions/WinWait.htm)($sTitle)
WinActivate (http://www.autoitscript.com/autoit3/docs/functions/WinActivate.htm)($sTitle)
WinWaitActive (http://www.autoitscript.com/autoit3/docs/functions/WinWaitActive.htm)($sTitle)

_ScreenCapture_CaptureWnd (http://dundats.mvps.org/help/html/libfunctions/_screencapture_capturewnd.htm)(@DesktopDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@desktopdir) & "\Screen.jpg", $hWin)

vxor
12-11-2011, 21:49
Все отлично! Сработало так:
#include <ScreenCapture.au3>
$sTitle = "Заголовок"
$hWin = WinWaitActive($sTitle)
_ScreenCapture_CaptureWnd("c:\Screen.jpg", $hWin)

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

Creat0R
12-11-2011, 22:09
Что делать в таком случае? »
Уменьшить паузу ожидания окна:

Opt (http://www.autoitscript.com/autoit3/docs/functions/Opt.htm)("WinWaitDelay", 0)
(добавить в начало скрипта, перед Win* функциями)

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




© OSzone.net 2001-2012