Решил сделать аналог imagesearch, который у меня не работает =)
Но... Есть проблеммы, и я не знаю как их решить...
Помогите пожалуйста, кому не лень =)
Но... Есть проблеммы, и я не знаю как их решить...
Помогите пожалуйста, кому не лень =)
Код:
#include <WinApiEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
Global $hWnd = WinGetHandle('[active]')
Global $Size = WinGetClientSize($hWnd)
Global $L = $Size[0] * $Size[1]
Func SearchBmp($filename = 'bitmap1.bmp')
Local $hDC = _WinAPI_GetDC($hWnd)
Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
Local $hBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $Size[0], $Size[1])
Local $hSv = _WinAPI_SelectObject($hMemDC, $hBitmap)
_WinAPI_BitBlt($hMemDC, 0, 0, $Size[0], $Size[1], $hDC, 0, 0, $SRCCOPY)
_WinAPI_SelectObject($hMemDC, $hSv)
_WinAPI_DeleteDC($hMemDC)
_WinAPI_ReleaseDC($hWnd, $hDC)
Local $tBits = DllStructCreate('dword[' & $L & ']')
_WinAPI_GetBitmapBits($hBitmap, 4 * $L, DllStructGetPtr($tBits))
;скриншот есть
;$hBitmap=FileOpen($filename)
Local $tt=0
Local $size = FileGetSize($filename)
$t1Bits = DllStructCreate('dword[' & $size & ']')
_WinAPI_LoadBitmap($tt,$filename) ;тут проблеммы начинаются, ничего не придумал... Пытаюсь загрузить битмап
_WinAPI_GetBitmapBits($tt, $size*4, DllStructGetPtr($t1Bits)) ;Безуспешно пытаюсь загрузить битмап в структуру
For $t=1 to $L Step 1 ;Промотка битов скриншота
For $t1=1 to $size Step 1 ;Промотка битов битмапа
If DllStructGetData($tBits, 1, $t) <> DllStructGetData($t1Bits, 1, $t1) Then ;сверяем биты картинок , если они полностью совпадают - пишем корды
ExitLoop(1)
ElseIf $t1 == $size Then
ConsoleWrite('x='&Mod($t, @DesktopWidth)- 1 &' y='&Ceiling($t / @DesktopWidth) - 1&@CR) ;у меня эта ... с $size[0,1] отказывается работать, заменил на собаку
EndIf
Next
Next
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteObject($hMemDC)
_WinAPI_DeleteObject($hSv)
_WinAPI_DeleteObject($hDC)
_WinAPI_DeleteObject($tt)
EndFunc
SearchBmp()