AutoHotKey как передавать / оценивать параметры в функции
12817
GernBlandston
У меня проблемы с пониманием того, как параметры доступны в функциях AutoHotKey.
Например, я устанавливаю переменную myVar с помощью InputBox, а затем передаю ее функции. Как мне оценить arg в TestFunction?
#t:: inputbox myVar, What is your variable? myNewVar := TestFunction(%myVar%) MsgBox %myNewVar% return TestFunction(arg) { MsgBox arg msgBox %arg% return %arg% }
Я хочу настроить горячую клавишу, которая будет запрашивать ключевое слово для приложения, затем оценивать то, что введено в функцию, и запускать любое приложение, соответствующее этому ключевому слову.
Спасибо!
Крис
Когда вы вызываете функцию, вам не нужны знаки процента вокруг параметра: `myNewVar: = TestFunction (myVar)`
Bavi_H 13 лет назад
1
Бави прав (он должен был поставить свой ответ в ответе): параметры, вызываемые функцией, должны `function (" string ")`, если они являются строками, и просто `function (variable)` (без знаков процента), если они переменные. Это работает, если вы просто удалите знаки процента в третьей строке. Я знаю, как невероятно расстраивающие процентные знаки и кавычки могут быть в AHK: они тоже время от времени убивают меня.
Cerberus 13 лет назад
0
2 ответа на вопрос
1
qwertzguy
Я исправил ваш скрипт (как предложил Bavi_H) и добавил пример для запуска приложения, соответствующего ключевому слову.
#t:: inputbox myVar, What is your variable? myNewVar := TestFunction(myVar) MsgBox %myNewVar% return TestFunction(arg) { msgBox %arg% if (arg = "calc") { run, calc.exe } else if (arg = "word") { run, winword.exe } return arg . "bob" }
1
ClearBlueSky85
В основном команды, такие как run, %something%, отличаются от функций, таких как myFunction(something). Вот еще один пример, основанный на ответе qwertzguy
#t:: ; get variable from message box inputbox myVar, What is your variable? ; myVar DOES NOT have percents when passed to function myNewVar := TestFunction(myVar) ; myNewVar DOES have percents when passed to command MsgBox %myNewVar% return TestFunction(arg) { ; command DOES have percents MsgBox Launching: %arg% if (arg = "calc") { ; commands use traditional variable method ; traditional method example: Var = The color is %FoundColor% ; variables are evaluated inside quotes run, "%A_WinDir%\system32\calc.exe" } else if (arg = "word") { ; functions need to use expression version since percents are not evaluated ; expression method example: Var := "The color is " . FoundColor ; variables are not evaluated inside quotes EnvGet, ProgramFilesVar, ProgramFiles(x86) OfficeVersionVar := "15" RunFunction(ProgramFilesVar . "\Microsoft Office\Office" . OfficeVersionVar . "\WINWORD.EXE") } return "You typed: " . arg } RunFunction(arg) { run, %arg% }