Автор Тема: [Окна, Диалоги] Поиск изображения в неактивном окне  (Прочитано 1173 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Sanlak [?]

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

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

Русское сообщество AutoIt


Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3975
  • Репутация: 1056
    • Награды
  • Версия AutoIt: 3.3.14.0
Sanlak
Цитировать
в области неактивного окна
Код: AutoIt [Выделить]
#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
Подобное свойство есть только у неё.

Русское сообщество AutoIt

Re: [Окна, Диалоги] Поиск изображения в неактивном окне
« Ответ #1 Отправлен: Январь 29, 2016, 17:54:52 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
13543 Просмотров
Последний ответ Декабрь 29, 2010, 01:09:36
от shm_alex
0 Ответов
2194 Просмотров
Последний ответ Май 11, 2012, 22:26:12
от GenoTIP
0 Ответов
3037 Просмотров
Последний ответ Август 15, 2012, 09:26:25
от Kaster
0 Ответов
1536 Просмотров
Последний ответ Январь 13, 2013, 13:36:48
от Kaster
39 Ответов
12669 Просмотров
Последний ответ Июнь 06, 2018, 23:45:06
от mr.Gbabak
9 Ответов
3554 Просмотров
Последний ответ Декабрь 18, 2014, 08:01:02
от xlgrgrc
0 Ответов
1166 Просмотров
Последний ответ Декабрь 16, 2014, 16:46:18
от madmasles
1 Ответов
1419 Просмотров
Последний ответ Март 24, 2015, 22:38:03
от SkinWarS
6 Ответов
890 Просмотров
Последний ответ Июль 30, 2017, 11:29:32
от eralex
3 Ответов
331 Просмотров
Последний ответ Апрель 24, 2018, 20:00:26
от Tempo