Что нового

[Окна, Диалоги] Поиск изображения в неактивном окне

Sanlak

Новичок
Сообщения
5
Репутация
0
Знаю эта тема не раз подымалась, но все же. Как определить координаты местонахождения изображения (сохраненном в файле) в области неактивного окна( со свойством @SW_HIDE или за пределами экрана) зная заголовок окна? Желательно чтоб было в функции свойство tolerance, как в ImageSearch.

В других примерах получалось только выполнить поиск только в активном окне или находящемся поверх всех окон. Или вообще скриншот делался в области нахождения нужного окна, но и захватовалось изображение окон, находящихся поверх него.
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
Sanlak
в области неактивного окна
Код:
#include "BmpSearch.au3" ; https://www.autoitscript.com/forum/topic/158264-bmpsearch-search-for-bitmap-within-bitmap-assembly-version/
#include <GDIPlus.au3>

_GDIPlus_Startup()

$hSource = WindowCapture(WinGetHandle("Title"))
$hBitmap = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\pic.bmp")
$hFind = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
$aCoords = _BmpSearch($hSource, $hFind, 1)

If @error Then
  ConsoleWrite("Не найдено" & @CRLF)
Else
  ConsoleWrite("X:" & $aCoords[1][2] & " Y:" & $aCoords[1][3] & " time:" & @extended & @CRLF)
EndIf

Func WindowCapture($hWnd)
  If Not IsHWnd($hWnd) Then Return SetError(1, 0, 0)
  Local $aClient, $hDC, $hMemDC, $hBmp
  $aClient = WinGetClientSize($hWnd)
  If Not IsArray($aClient) Then Return SetError(2, 0, 0)
  $hDC = _WinAPI_GetDC($hWnd)
  $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
  $hBmp = _WinAPI_CreateCompatibleBitmap($hDC, $aClient[0], $aClient[1])
  _WinAPI_SelectObject($hMemDC, $hBmp)
  _WinAPI_BitBlt($hMemDC, 0, 0, $aClient[0], $aClient[1], $hDC, 0, 0, 0x00CC0020) ; $SRCCOPY
  Return _GDIPlus_BitmapCreateHBITMAPFromBitmap(_GDIPlus_BitmapCreateFromHBITMAP($hBmp))
EndFunc

; отладка
;~ #include <ScreenCapture.au3>
;~ _ScreenCapture_SaveImage("pic1.bmp", $hSource, False)
;~ _ScreenCapture_SaveImage("pic2.bmp", $hFind, False)


со свойством @SW_HIDE
Невозможно сделать скриншот скрытого окна, также, как и свёрнутого.

свойство tolerance, как в ImageSearch
Подобное свойство есть только у неё.
 
Верх