Twilight_Wolf
Новичок
- Сообщения
- 16
- Репутация
- 0
Добрый день. Возникла потребность искать на экране картинку по образцу (bmp) и получать координаты её места нахождения.
Начал с того, что набросал простой скрипт:
Так всё работает.
Но, очень уж захотелось поместить шаблон картинки для поиска в сам скомпилированный скрипт, чтобы было всё красиво и всего один файл (т. к. картинок для поиска будет условно пара десятков).
Набросал второй вариант скрипта:
И вот тут вылезла засада: при попытке запуска скомпилированного варианта скрипт вываливается в ошибку (выжимка из журнала Windows):
Проверял Resource Hacker - картинка в exe файл добавляется. Помогите, пожалуйста, разобраться, что я делаю не так? Как корректно достать картинку из exe на лету и использовать её в качестве шаблона для поиска аналогичного участка на экране?
Начал с того, что набросал простой скрипт:
Код:
#include <ScreenCapture.au3>
#include "BmpSearch.au3"
#include <WinAPI.au3>
_GDIPlus_Startup()
$hSource = _ScreenCapture_Capture()
$hBmp1 = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\cat.bmp")
$hFind1 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp1)
$aCoords1 = _BmpSearch($hSource, $hFind1, 1)
If @error Then
Exit
Else
MouseClick("left", $aCoords1[1][2]+5, $aCoords1[1][3]+5, 1, 0)
EndIf
Так всё работает.
Но, очень уж захотелось поместить шаблон картинки для поиска в сам скомпилированный скрипт, чтобы было всё красиво и всего один файл (т. к. картинок для поиска будет условно пара десятков).
Набросал второй вариант скрипта:
Код:
#Region
#AutoIt3Wrapper_Res_File_Add=cat.bmp, 2, 200
#EndRegion
#include <ScreenCapture.au3>
#include "BmpSearch.au3"
#include <WinAPI.au3>
_GDIPlus_Startup()
$hSource = _ScreenCapture_Capture()
$hInstance = _WinAPI_GetModuleHandle(0)
$hBitmap = _WinAPI_LoadBitmap($hInstance, 200)
$hFind1 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
$aCoords1 = _BmpSearch($hSource, $hFind1, 1)
If @error Then
Exit
Else
MouseClick("left", $aCoords1[1][2], $aCoords1[1][3], 1, 0)
EndIf
И вот тут вылезла засада: при попытке запуска скомпилированного варианта скрипт вываливается в ошибку (выжимка из журнала Windows):
Имя сбойного приложения: test.exe, версия: 0.0.0.0, метка времени: 0x5ea6a576
Имя сбойного модуля: gdiplus.dll, версия: 10.0.14393.0, метка времени: 0x57898f85
Код исключения: 0xc0000005
Смещение ошибки: 0x00056e80
Идентификатор сбойного процесса: 0x2708
Время запуска сбойного приложения: 0x01d61c761c74fcc5
Имя сбойного модуля: gdiplus.dll, версия: 10.0.14393.0, метка времени: 0x57898f85
Код исключения: 0xc0000005
Смещение ошибки: 0x00056e80
Идентификатор сбойного процесса: 0x2708
Время запуска сбойного приложения: 0x01d61c761c74fcc5