Дата: Воскресенье, 22.01.2017, 16:17 | Сообщение # 1
Новичок
Сообщений: 12
Статус: Offline
Приветствую, уважаемые. В общем, тема такая: все наверное уже прекрасно видели урок от McFree, где описывалось управление в диалоге с id'ом 2 (диалог с выбором пункта), и активации пункта кнопкой Enter. Но вот не задача, как же это можно обойти с помощью памяти процесса, выбирая пункт мышью? Ведь это возможно написать, данную функцию? Например в стандартном udf'e есть функция IsDialogButton1Selected(). Так вот, эта функция вообще никак не работает... Думаю найдется такой профи в ахк, который все же сможет написать эту самую функцию, типа "нажат первый пункт в диалоге или же нажатая 1ая(2ая) кнопка.
Сообщение отредактировал shadystyle - Воскресенье, 22.01.2017, 23:22
Дата: Понедельник, 23.01.2017, 18:58 | Сообщение # 6
Боец
Сообщений: 110
Статус: Offline
Цитатаshadystyle ()
IsDialogButton1Selected().
она работает, но не так как ты думаешь. Эта функция передает 1, когда ты наводишь мышкой и эта кнопка выделяется под мышкой. Например что бы нажать кнопку "Выбор" мышкой.
Можно и обойтись тем что есть. Могу подкинуть идею алгоритма. В udf есть функция getDialogIndex() - показывает номер строки, которую выбрал. Например в списке слова "яблоко" идет вторым и когда ты выделишь мышкой то оно покажет индекс 2 тоесть номер строки 2. Далее есть функция, которая считывает текст строки по номеру тоесть индексу getDialogLine(index) Понимаешь на что я намекаю? Далее примерно так: когда нажимается левая кнопка мыши и при этом открыт диалог(что бы ложных срабатываний не было) то он считывает getDialogLine(getDialogIndex()).
Либо сделайть таймер на то что бы постоянно считывал getDialogLine(getDialogIndex()). и выводил
Дата: Понедельник, 23.01.2017, 21:39 | Сообщение # 7
Новичок
Сообщений: 12
Статус: Offline
ЦитатаDworkin ()
она работает, но не так как ты думаешь. Эта функция передает 1, когда ты наводишь мышкой и эта кнопка выделяется под мышкой. Например что бы нажать кнопку "Выбор" мышкой.
Можно и обойтись тем что есть. Могу подкинуть идею алгоритма. В udf есть функция getDialogIndex() - показывает номер строки, которую выбрал. Например в списке слова "яблоко" идет вторым и когда ты выделишь мышкой то оно покажет индекс 2 тоесть номер строки 2. Далее есть функция, которая считывает текст строки по номеру тоесть индексу getDialogLine(index) Понимаешь на что я намекаю? Далее примерно так: когда нажимается левая кнопка мыши и при этом открыт диалог(что бы ложных срабатываний не было) то он считывает getDialogLine(getDialogIndex()).
Либо сделайть таймер на то что бы постоянно считывал getDialogLine(getDialogIndex()). и выводил
Внимательно почитал, то что вы написали, решил протестить, вот сам код:
Что могу сказать, наводил я мышью на кнопку "Действия" , а число он выводил упорно "0". На счет getDialogLine(getDialogIndex()) - она к сожалению тоже не рабочая, читал в одной теме, как тоже пытались высчитать этим самым пункт в диалоге, не получилось ни у кого. У меня уже есть функция, которая определяет линию в диалоге, а вот по нажатию пока что ничего. Думаю что тема все еще актуальна
Сообщение отредактировал shadystyle - Понедельник, 23.01.2017, 21:40
Сначало жмеш F2, затем мышкой выбираешь строку и жмешь F3, тебе index показывает номер строки. Так что функция getDialogLine(getDialogIndex()) работает. Я использвол udf отсюда http://cheat-master.ru/forum/149-619860-1
Если у тебя работает getDialogIndex() (у меня всегда пишет 201), то этот код прокатит:
Интересно, думал что я один такой, у которого постоянно выдает 201 index.) Сейчас протестирую код, заранее спасибо за проделанную работу P.S. Не понятная функция SCM(....), компилятор говорит что нет такой функции, также хотел спросить, как именно работает написанный вами код.
Сообщение отредактировал shadystyle - Вторник, 24.01.2017, 20:08
А где вы их находите, мне нужно именно проверка нажатия первой и второй кнопки, а так же нажатие именно в самом диалоге, а точнее говоря двойное нажатие на линию А тот код, тот что выше, все равно не работает... Заменил SCM на AddChatMessage, постоянно выводит нули.