AutoHotKey wie Parameter an Funktionen übergeben / ausgewertet werden
12883
GernBlandston
Ich habe Probleme zu verstehen, wie auf Parameter in AutoHotKey-Funktionen zugegriffen wird.
Zum Beispiel setze ich meine Variable mit der InputBox und übergebe sie dann an eine Funktion. Wie bewerte ich das Argument in der TestFunction?
#t:: inputbox myVar, What is your variable? myNewVar := TestFunction(%myVar%) MsgBox %myNewVar% return TestFunction(arg) { MsgBox arg msgBox %arg% return %arg% }
Ich möchte einen Hotkey einrichten, der zur Eingabe eines Schlüsselworts für eine App auffordert. Anschließend wird ausgewertet, was in der Funktion eingegeben wird, und die App wird gestartet, die dem Schlüsselwort entspricht.
Vielen Dank!
Chris
Wenn Sie die Funktion aufrufen, benötigen Sie keine Prozentzeichen um den Parameter: `myNewVar: = TestFunction (myVar)`
Bavi_H vor 13 Jahren
1
Bavi hat recht (er hätte seine Antwort in eine Antwort setzen sollen): Parameter, die von einer Funktion aufgerufen werden, benötigen `function (" string ")`, wenn es sich um Strings handelt, und nur 'function (variable)' (keine Prozentzeichen), wenn sie eine sind Variablen. Es funktioniert, wenn Sie nur die Prozentzeichen in Ihrer dritten Zeile entfernen. Ich weiß, wie unglaublich frustrierend Prozentzeichen und Anführungszeichen in AHK sein können: Sie bringen mich auch ab und zu um.
Cerberus vor 13 Jahren
0
2 Antworten auf die Frage
1
qwertzguy
Ich habe Ihr Skript korrigiert (wie von Bavi_H vorgeschlagen) und ein Beispiel hinzugefügt, um eine Anwendung zu starten, die einem Schlüsselwort entspricht.
#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
Grundsätzlich unterscheiden sich Befehle wie z. B. run, %something%von Funktionen wie z myFunction(something). Hier ist ein weiteres Beispiel, das auf der Antwort von qwertzguy basiert
#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% }