1 (изменено: ilya20069, 2011-01-29 14:54:45)

Тема: AHK: переменная в ControlSend

Копал документацию, но видимо проглядел как это сделать:
1.

IniRead, MyCount, %systemroot%\WINDOWS\Settings.ini, General, Click, F2
#z::ControlSend,, {%MyCount%}, ahk_class Notepad

В ini содержится название клавиши.
При интерпретации ошибки не появляется, в логе скрипта ошибок нет. однако результата при нажатии тоже. понимаю что ошибся в синтаксисе но как исправить не знаю.
в ahk_class ошибка исключена, проверено

2

Re: AHK: переменная в ControlSend

1. Вместо ahk_class NotePad нужно ahk_class Notepad
2. Правила.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: переменная в ControlSend

ilya20069 пишет:

в ahk_class ошибка исключена, проверено

А в указании пути к ini-файлу? %systemroot% — это уже папка Windows. Получается, у тебя в папке Windows ещё одна папка Windows?
Потом, переменная, в которую считывается значение в команде IniReadMyCount, а посылать ты пытаешься какой-то %Click%.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4 (изменено: ilya20069, 2011-01-29 14:59:15)

Re: AHK: переменная в ControlSend

вот это меня самого удивило %systemroot% является корнем с:\
чтение тоже проходит нормально, проверено MsgBox'ом, а вот посылать переменную как клавишу наотрез отказывается
с посылом клика это я очепятался когда писал в тему, исправил

5

Re: AHK: переменная в ControlSend

ilya20069 пишет:

вот это меня самого удивило %systemroot% является корнем с:\

Тогда используй лучше A_WinDir, systemroot — системная переменная.
А как выглядит ini-файл?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: переменная в ControlSend

[General]
Click=F2
[Default]
Click=F2

вот

7

Re: AHK: переменная в ControlSend

А что должно произойти в блокноте, когда ему послана клавиша F2?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: переменная в ControlSend

в блокноте у меня висит макрос на F2 который копирует выделенное, а в опере это переход по указанному адресу, нужно чтобы скрипт был как бы универсальным при незначительных изменениях в коде (изменение класса или значения в ini)

9

Re: AHK: переменная в ControlSend

В блокноте? Макрос?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10 (изменено: ilya20069, 2011-01-29 15:23:20)

Re: AHK: переменная в ControlSend

AkelPad 4.3.6

11

Re: AHK: переменная в ControlSend

Этим не пользовался, не знаю. Попробуй просто вместо F2 посылать какую нибудь текстовую клавишу. Если сработает — значит проблема не в коде, а в AkelPad'е.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

12 (изменено: ilya20069, 2011-01-29 15:39:42)

Re: AHK: переменная в ControlSend

сейчас для проверки попроовал на опере

IniRead, MyCount, %A_ScriptDir%\ahk.ini, General, Click, F3
#z::
ControlSend,, {%MyCount%}, ahk_class OperaWindowClass
msgbox %MyCount%

в ini написал F1, для проверки чтения, в сообщени выводится F1, то есть чтение проходит верно, а нажатие в оперу не приходит.
с текстовыми клавишами та же история.
может проценты в контрол сенд  зря поставил?

13

Re: AHK: переменная в ControlSend

Вот так попробуй:

IniRead, MyCount, %A_ScriptDir%\ahk.ini, General, Click, F3
#z::
Send, {%MyCount%}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14 (изменено: ilya20069, 2011-01-29 16:08:49)

Re: AHK: переменная в ControlSend

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

15

Re: AHK: переменная в ControlSend

Так, скорее всего, горячие клавиши, созданные для данных окон, будут работать только тогда, когда эти окна активны, посылать их в неактивные — бесполезно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16

Re: AHK: переменная в ControlSend

значит придется делать все-таки сендом, спасибо, пойду дальше шаманить

17

Re: AHK: переменная в ControlSend

ilya20069, в AkelPad4 может быть другой класс окна нежели «Notepad». Проверяли?

18 (изменено: ilya20069, 2011-01-29 16:36:25)

Re: AHK: переменная в ControlSend

Заработало! Уж не знаю где, но в первый раз я точно где-то накосячил с синтаксисом. Вот рабочий вариант

IniRead, My2Edit, %systemroot%\WINDOWS\settings.ini, General, Attach, F1
!z::ControlSend,,{%My2Edit%},ahk_class OperaWindowClass

Единственное отличие от старого варианта это отсутвие пробелов между параметрами и смена горячей клавиши.

19

Re: AHK: переменная в ControlSend

Остаётся попробовать добавить пробелы и сменить горячую клавишу на прежнюю!

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

20 (изменено: ilya20069, 2011-01-29 17:00:27)

Re: AHK: переменная в ControlSend

Ой, да действительно, у него класс AkelPad4. извините что так долго парил вам мозг по недосмотру, сам уже плохо осознаю что делаю. но в опере то оно тоже не срабатывало а там я класс не раз проверил.


эээ неет, стойте все правильно у акельпада класс Notepad!
все нафиг скрипты надо поспать