AutoHotKey関数にパラメータを渡す/評価する方法


1

AutoHotKey関数でパラメータにアクセスする方法を理解できません。

たとえば、InputBoxでmyVar変数を設定し、それを関数に渡します。 TestFunctionの引数を評価する方法

#t::
    inputbox myVar, What is your variable?
    myNewVar := TestFunction(%myVar%)
    MsgBox %myNewVar% 
    return

TestFunction(arg)
{
    MsgBox arg
    msgBox %arg%
    return %arg%
}    

私がやろうとしているのは、アプリのキーワードを要求するホットキーを設定してから、関数に入力された内容を評価し、そのキーワードに対応するアプリを起動することです。

ありがとうございます。

クリス


1
この関数を呼び出すときは、パラメータの前後にパーセント記号を付ける必要はありません。 myNewVar := TestFunction(myVar)
Bavi_H

Baviは正しい(彼は自分の答えを答えに入れるべきだった) function("string") 文字列の場合 function(variable) 変数の場合は(パーセント記号なし)。 3行目のパーセント記号を削除するだけでうまくいきます。私はAHKにパーセンテージ記号と引用符がどれほど信じられないほどイライラするかを知っています。
Cerberus

回答:


2

私はあなたのスクリプトを修正し(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

基本的に以下のようなコマンド 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%
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.