2

Alt+F4 を ESC にマッピングして、エスケープを押すだけでウィンドウを閉じることができるようにしています。ただし、実際に ESC を使用する必要があるウィンドウが 2 つあります。そのため、これら 2 つのウィンドウのいずれかがアクティブなときに、ウィンドウを閉じずに ESC を押すことができるようにしたいと考えています。これを達成する最も簡単な方法は何ですか?アクティブなウィンドウを 1 つだけ除外しているときにスクリプトが動作していますが、2 つのウィンドウのいずれかがアクティブなときに動作する必要があります。

これが私の試みたコードです:

GroupAdd, ESC, Untitled - Notepad
GroupAdd, ESC, 

#IfWinNotActive, ahk_group, ESC
Escape::!F4
Return

これは、1 つのウィンドウだけで適切に動作するコードです。

;#IfWinNotActive, Untitled - Notepad
;Escape::!F4
;Return

更新:これは機能するはずですか?

SetTitleMatchMode, 2
SetTitleMatchMode, 2
#IfWinNotActive, Untitled - Notepad
#IfWinNotActive, Document 1 - Microsoft Word
    Escape::!F4
Return
4

3 に答える 3

6

#IfWinNotActive次の行に余分なコンマがありますahk_group

次のことを試してください。

GroupAdd, ESC, Untitled - Notepad
;  Add more windows to the group if necessary

#IfWinNotActive, ahk_group ESC
    Escape::!F4
Return
于 2013-07-12T16:51:24.280 に答える
2

を使ってみてくださいSetTitleMatchMode

http://www.autohotkey.com/docs/commands/SetTitleMatchMode.htm

2: ウィンドウのタイトルは、一致するようにその内部のどこにでも WinTitle を含めることができます。

次に、これを行うことができます (デフォルトでは大文字と小文字が区別されます)。

settitlematchmode, 2
#IfWinNotActive, Untitled - 

これを試して:

まず、同じスクリプトで同じキーを 2 回再マップすることはできません。

このコマンドは、IfWinExist や WinActivate など、すべてのウィンドウ コマンドの動作に影響します。

次に、次のように行を積み重ねます。

#IfWinNotActive, Untitled - Notepad
#IfWinNotActive, Document 1 - Microsoft Word

あなたが言っているのは、win1 がアクティブでない場合、win2 がアクティブでない場合です。

代わりにこれを試してください:

settitlematchmode, 2
app1 := winexist("other app")
app2 := winexist("Untitled - Notepad")

if(app1 || app2)    ;the || means OR.  you can use && for AND.
    Escape::!F4   ;you can only map a particular key one time per script

またはこれは、あなたのアプローチの線に沿っています:

settitlematchmode, 2
GroupAdd, ESC, Untitled - Notepad
GroupAdd, ESC, My other window
IfWinNotActive, ahk_group ESC
    Escape::!F4
Return
于 2013-07-12T16:51:33.807 に答える