Версия AutoIt: 3.3.14.0
Описание:
Здравствуйте.
Тут вот внезапно возник непростой вопрос, который я хотел бы задать.
У меня имеется макрос, делающий скриншот программы.
Но у него есть необычное ограничение - с теми программами, которые при открытии - тут же разворачиваются на весь экран - не получается снять скриншот.
Поскольку я не могу перехватить название окна - оно тут же раскрывается во весь экран.
А если выйти из полноэкранного режима - то это окно тут же сворачивается и поэтому АвтоитИнфо - тоже не получается на него навести.
Процесс называется heroes4.exe
Отсюда вопрос - как сделать скриншот экрана, который занимает программа - ориентируясь не на название окна, а на процесс?
Примечания:
Думал как-то приспособить имеющийся скрипт, но поскольку не могу узнать название окна - он не очень полезен.
Описание:
Здравствуйте.
Тут вот внезапно возник непростой вопрос, который я хотел бы задать.
У меня имеется макрос, делающий скриншот программы.
Но у него есть необычное ограничение - с теми программами, которые при открытии - тут же разворачиваются на весь экран - не получается снять скриншот.
Поскольку я не могу перехватить название окна - оно тут же раскрывается во весь экран.
А если выйти из полноэкранного режима - то это окно тут же сворачивается и поэтому АвтоитИнфо - тоже не получается на него навести.
Процесс называется heroes4.exe
Отсюда вопрос - как сделать скриншот экрана, который занимает программа - ориентируясь не на название окна, а на процесс?
Примечания:
Думал как-то приспособить имеющийся скрипт, но поскольку не могу узнать название окна - он не очень полезен.
Код:
#include <GdiPlus.au3>
#include <WindowsConstants.au3>
Opt("TrayAutoPause", 0)
Opt("WinTitleMatchMode", -2)
HotKeySet("{ESC}", "_Exit")
HotKeySet("w", "_Screen")
HotKeySet("ц", "_Screen")
While 1
Sleep(10)
WEnd
Func _Screen()
Local $hWnd = WinGetHandle("Total Commander")
If Not $hWnd Then Return TrayTip("Screen", "Окно не существует", 10, 3)
Local Static $i
Local $iW = WinGetClientSize($hWnd)[0], $iH = WinGetClientSize($hWnd)[1], $hDC, $hMemDC, $hHBitmap, $hObj, $hBitmap
$hDC = _WinAPI_GetDC($hWnd)
$hMemDC = _WinAPI_CreateCompatibleDC($hDC)
$hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH)
$hObj = _WinAPI_SelectObject($hMemDC, $hHBitmap)
_WinAPI_BitBlt($hMemDC, 0, 0, $iW, $iH, $hDC, 0, 0, $SRCCOPY)
_WinAPI_SelectObject($hMemDC, $hObj)
_WinAPI_DeleteDC($hMemDC)
_WinAPI_ReleaseDC($hWnd, $hDC)
_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBitmap)
_WinAPI_DeleteObject($hHBitmap)
$i += 1
_GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Screen-" & $i & ".bmp")
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
EndFunc ;==>_Screen
Func _Exit()
Exit
EndFunc ;==>_Exit