0

AutoHotKey で作成した関数にウィンドウ タイトルを渡したいのですが、ウィンドウ タイトルWinTitleは文字列ですか? 4 つのウィンドウ タイトルがあり、それらを同じ関数に渡す必要があります。

Extract(my_window_title) {
; Wake and select the correct window to be in focus
WinWait, my_window_title, 
IfWinNotActive, my_window_title, , WinActivate, my_window_title, 
WinWaitActive, my_window_title,
; ... do a bunch of things
}

私はこのように関数を呼び出します

title1 = "Some title"
Extract(title1) 

%また、すべての変数を入れてみました

4

2 に答える 2

2

はい、WinTitle は基本的に文字列です。Autohotkey フォルダーを確認してください。「AU3_Spy.exe」というファイルがあるはずです。ウィンドウのタイトルを見つけるために使用します。

そして、Elliot DeNolf が既に述べたように、変数でいくつかの間違いを犯しました。また、IfWINNotActive の構文をもう一度確認する必要があります。これはうまくいくはずです:

Extract(my_window_title) {
    ; Wake and select the correct window to be in focus
    WinWait, %my_window_title%
    IfWinNotActive, %my_window_title%
    {
        WinActivate, %my_window_title%
        WinWaitActive, %my_window_title%
    }
    msgbox, %my_window_title%
    ; ... do a bunch of things
}

title1 = MyWindowTitle
Extract(title1) ;functions always expect variables, no percent-signs here
于 2013-11-07T11:22:36.577 に答える
1

スクリプトで問題を引き起こしているように見えるものがいくつかあります。

文字列値を割り当てて を使用する場合=、引用符は必要ありません。を使用して値を割り当てる場合:=は、引用符が必要です。これらの 2 行は同等です。

    title1 := "Some Title"
    title1 = Some Title

これらの値が関数を介して呼び出されると、つまり. Extract(title1)%記号を使用する必要があります(質問の最後で述べたように)。これは、次の 2 つの方法で呼び出すことができます。

    WinActivate, %my_window_title%
    WinActivate, % my_window_title

タイトルが無効な場合、スクリプトは と で無期限に待機しWinWaitますWinWaitActiveタイムアウト値ErrorLevelを使用して、それが成功したかどうかを確認することをお勧めします。

于 2013-11-06T18:13:14.450 に答える