1

Тема: AHK: Как назначить произвольные идентификаторы control HWND?

Здравствуйте. Хочу усовершенствовать интерфейс одной программы. Но столкнулся с проблемой AHKSpy и ему подобные программы не могут найти никаких идентификаторов кнопок приложения. Ни HWND ни какие-либо другие. Саму кнопку AHKSpy как бы видит, появляется вокруг кнопки рамка, но нет никаких идентификаторов. У меня в связи с этим появилась идея назначить самому рандомные идентификаторы HWND каждому элементу управления данного приложения и потом с ними уже работать будет легче.

Осуществима ли такая идея, или может подскажете другой способ как вызывать нажатия на эти неопределяемые кнопки. Кнопки не имеют в себе текста, на них расположены картинки. Я умею пользоваться ImageSearch но считаю что его нужно использовать в самом последнем случае, и к тому же я хотел бы применить ControlMove, а без идентификаторов непонятно как это сделать.

Мои разработки: Bsod finder, MyTetra Integrator

2

Re: AHK: Как назначить произвольные идентификаторы control HWND?

Долго отвечал, потому что готовился для ответа. Программа MyTetra. Скачать настроенную портативную версию с расширенным по отношению к официальной установке функционалом можно по этой ссылке (не реклама). В эту сборку я вставил для примера более 200 своих заметок (многие по теме AutoHotKey).

На скриншоте я выделил кнопки, которыми я хочу управлять через контроллы.

https://a.radikal.ru/a40/1803/67/a48b0d8d808f.png

Мои разработки: Bsod finder, MyTetra Integrator

3 (изменено: stealzy, 2018-03-28 23:18:48)

Re: AHK: Как назначить произвольные идентификаторы control HWND?

Offtop:
Как давний пользователь Opera note, а теперь совместимого аддона O'Notes под firefox приметил эту программу по статье на хабре, но попробовать руки все никак не доходили. Для сохранения веб-страниц локально использую Mozilla Archive Format (MAFF), есть и под хром.
При запуске попыталась сработать синхронизация, с чем именно синхронизировалось бы, интересно??

Программа использует Qt, что имеет плюс в виде легкой кроссплатформенности и минус в огромном размере на диске, потребении памяти и неродном интерфейсе на любой платформе.
Неродной интерфейс кроме внешнего вида означает также что попытки автоматизации извне обречены. Хотя верхние кнопки имеют свойства Acc, но они языко-зависимы. ImageSearch будет работать только на компьютерах с аналогичной темой оформления и, возможно, системным масштабом.
Обращаться к автору не пробовали?

4

Re: AHK: Как назначить произвольные идентификаторы control HWND?

Посмотрел - программа на диске занимает 58 Mb в памяти занято 44 Mb. При этом у меня не так много заметок (около 1000) и все летает с бешеной скоростью. При нынешних конфигурациях - это какие-то капли в море. Даже при вчерашних конфигурациях железа. Автор проводил нагрузочное тестирование на 100 000 заметок - все так же отлично работало. Так что у вас слишком высокие требования которые по большому счету не оправданы. Сравнивать эту программу нужно с браузерами.

По поводу обратится к автору - я конечно обращусь скорее всего, но заранее почти знаю результат. Он очень занятый человек и крайне редко отвечает на своем сайте. Впрочем это его право, ведь MyTetra - это его хобби и Open Source. Хотя недавно активизировался, и сказал что к лету планирует выпустить следующий релиз!

У меня есть еще мысль залезть в код MyTetra и там чего-нибудь поискать. Хотя для меня это очень сложно будет, не владею этой темой.

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

Мои разработки: Bsod finder, MyTetra Integrator

5

Re: AHK: Как назначить произвольные идентификаторы control HWND?

Посмотрел программу - вроде кнопки имеют постоянное положение относительно друг-друга и у каждой прописан default action.
Следовательно можно получать их состояние и посылать нажатия через acc.

6

Re: AHK: Как назначить произвольные идентификаторы control HWND?

Malcev
Спасибо. С acc дела еще не имел. Пошел изучать.

Мои разработки: Bsod finder, MyTetra Integrator