AHK: ImageSearch без файла картинки
Может кто-то подумает, что ерундой страдаю, но вот мне интересно, можно ли осуществить такой алгоритм.
Скрипт делает скрин, сохраняет в виде картинки, выполняет действия и ждет, когда эта картинки исчезнет.
Может как-то по другому можно реализовать, но и так работает. У меня вопрос в другом, можно ли избавиться от физического сохранения картинки? Ведь скрин сохраняется в памяти и можно ведь как-то использовать это при поиске?Или для этой цели ImageSearch не подходит?
2 Ответ от Malcev 2017-10-23 20:22:09- Malcev
- Разработчик
- Неактивен
ImageSearch не подходит.
3 Ответ от Vicoriyan 2017-10-23 20:44:21- Vicoriyan
- Участник
- Неактивен
- Рейтинг : [ 1 | 2 ]
Malcev А как тогда реализовать? Каким способом?
4 Ответ от Malcev 2017-10-23 21:20:21 (изменено: Malcev, 2017-10-23 21:22:40)- Malcev
- Разработчик
- Неактивен
Мы же с вами эту тему вдоль и поперек обсудили.Если вы беретесь за довольно сложные коды с GDI+, то стоит почитать о том как он работает, а не просто спрашивать-копировать-вставлять.Кстати, протестировал - из всех найденных мною Gdip Imagesearch, этот пока самый быстрый:
5 Ответ от Vicoriyan 2017-10-23 22:23:26- Vicoriyan
- Участник
- Неактивен
- Рейтинг : [ 1 | 2 ]
Malcev Все на английском и сложно понимать. Разбираюсь на примерах, на экспериментах и бывает на методах тыка.
6 Ответ от Malcev 2017-10-24 00:51:17 (изменено: Malcev, 2017-10-24 00:56:25)- Malcev
- Разработчик
- Неактивен
Нашел функции, быстрее чем подобная функция от Tic, более чем в полтора раза быстрее, чем ImageSearch.И в несколько раз быстрее, чем финальная функция автора - (https://github.com/MasterFocus/AutoHotk … mageSearch)Только для 32 бит.https://github.com/MasterFocus/AutoHotk … mageSearch
7 Ответ от KusochekDobra 2017-10-24 15:05:01- KusochekDobra
- Разработчик
- Неактивен
Кстати, поделка от Rseding91, упомянутого в примере выше, позволяет сделать каталог файлов заранее вписанных в код, который можно оформить как подключаемая через "#Include" библиотека и производить сканирование по дескрипторам вписанных таким образом файлов. Это может делать как стандартный способ:
Так и посредством "Gdip_ImageSearch()":
И передавать его в функцию вторым параметром.
А вот чтобы прям насовсем избавиться от предварительной подготовки графических фрагментов поиска, если хорошо подумать, то скорее всего не окажется делом достаточно целесообразным. Ведь в любом случае, искомые фрагменты будут использоваться и далее, тогда получается, что их предварительная подготовка снимает дополнительный вопрос накладных вычислительных расходов необходимых при каждой работе.
8 Ответ от Malcev 2017-10-24 16:15:07- Malcev
- Разработчик
- Неактивен
О, а я пропустил это нововведение , что можно в ImageSearch искать HBITMAP.Vicoriyan, тогда можно:
9 Ответ от Vicoriyan 2018-04-14 21:49:01 (изменено: Vicoriyan, 2018-04-14 21:57:54)- Vicoriyan
- Участник
- Неактивен
- Рейтинг : [ 1 | 2 ]
А можно избавиться от физического файла в этом коде? Например зашифровать в BASE64. Как шифровать и создавать переменные я знаю, но как это применить в данном случаи?
10 Ответ от KusochekDobra 2018-04-14 22:14:49- KusochekDobra
- Разработчик
- Неактивен
Передайте хендл на загруженный в память файл:
11 Ответ от Vicoriyan 2018-04-15 12:48:58- Vicoriyan
- Участник
- Неактивен
- Рейтинг : [ 1 | 2 ]
KusochekDobra Спасибо, что ответили по моему вопросу. Но как мне вставить сами картинки зашифрованных в BASE64?
12 Ответ от KusochekDobra 2018-04-15 14:53:07- KusochekDobra
- Разработчик
- Неактивен
Самый простой способ - перейти по ссылке в седьмом посте и ознакомиться с материалом, или воспользуйтесь поиском. На форуме должны быть примеры.
13 Ответ от Vicoriyan 2018-04-15 15:37:23- Vicoriyan
- Участник
- Неактивен
- Рейтинг : [ 1 | 2 ]
Пробовал, но не получается. Все делал по инструкции.
14 Ответ от KusochekDobra 2018-04-15 15:51:38- KusochekDobra
- Разработчик
- Неактивен
Я сейчас в огород, потом по делам. Если никто не поможет за это время, то отвечу самое позднее завтра, примерно в это же время.
15 Ответ от KusochekDobra 2018-04-16 03:27:37 (изменено: KusochekDobra, 2018-04-16 03:28:29)- KusochekDobra
- Разработчик
- Неактивен
Небольшая солянка из забугорных поделок, с которыми можно ознакомиться по ссылкам из секции "Credits":
Обработка выполняется над файлами и файлами в папках, перемещённых в окно сценария.Конвертирует файлы в base64 и генерирует для них код обёрнутый функциями для каждого файла, позволяющий загружать их в память и возвращая указатель.За это отвечает первый чекбокс. Второй, добавляет возможность восстанавливать файл к исходному состоянию, если передать вызову его функции имя и расширение файла, которые он получит в результате.Процесс обработки генерирует файл "*.ahk" в UTF-8, который можно запросто подключить через "#Include". Имя, которое получит результирующий файл зависит от имени первого файла, который был обработан и в первых строках будет содержать закомментированные шаблоны вызовов, перечисленных ниже функций, вида:
Vicoriyan, Вам достаточно покидать нужные картинки на ГУЙ этого скрипта, сохранить в файл и подключить его, или скопипастить из редактируемого поля, в котором его можно предварительно оценить и изменить. Переместите тогда этот текст куда-нибудь к Вашим функциям, я пример шаблона, в раскомментированном виде, куда-нибудь в секцию инициализации. Переменная "Converted_file_name_ext" будет содержать указатель на файл, загруженный в память. Его Вам и следует передать Gdip_CreateBitmapFromHBITMAP(HWND).