AutoHotKey: переменная горячей строки? - PullRequest
0 голосов
/ 22 июля 2010

Как вызвать глобальные переменные в функциях горячей строки.

Это работает:

::hlw::
hlwvar = Hello World
sendInput %hlwvar%
return

Это не так:

hlwvar = Hello World
::hlw::
sendInput %hlwvar%
return

Ответы [ 2 ]

4 голосов
/ 31 июля 2010

Я получил этот ответ от "Джоэл Т. 33 / М / Сиэтл, Вашингтон" через Аардварк. Я публикую это здесь, потому что это было очень полезно.

-

Ваша вторая форма должна действительно работать; попробуйте вставить только эти 4 строки в новый скрипт и запустите его, чтобы увидеть. Скорее всего, проблема в том, что во втором примере «hlwvar = Hello World» на самом деле не выполняется, потому что он не находится вверху скрипта. Когда AHK впервые запускает скрипт, он запускается сверху и выполняется, пока не встретит определение «return» или определение горячей клавиши / горячей клавиши. Следовательно, вы всегда должны определять свои глобальные переменные и любые другие глобальные настройки в верхней части вашего скрипта, и как только все вещи по инициализации скрипта будут выполнены, завершите их возвратом. Затем поместите все свои горячие клавиши / горячие клавиши / функции ниже этой точки.

Одна вещь, которую мне нравится делать, это помещать все мои глобальные вещи в функцию, например В этом() { Глобальный someglobalvar = myvalue вернуть } Тогда в верхней части моего сценария у меня есть В этом() вернуться

Это позволяет с легкостью определить, где живут мои предметы инициализации, а также перенести процедуру инициализации в другое место, если это необходимо. Обратите внимание, что ключевое слово «global» должно быть первой командой в определении функции, если вы хотите, чтобы все переменные, назначенные внутри указанной функции, были доступны глобально.

1 голос
/ 27 июля 2010

Как сказал Крис, следующие два кода работают для меня одинаково:

::hlw:: 
hlwvar = Hello World 
sendInput %hlwvar% 
return

и

hlwvar = Hello World
::hlw:: 
sendInput %hlwvar% 
return
...