2012-03-26 14 views
6

次のスクリプトは、Acrobat/Adob​​e Readerを使用している場合を除いて、Firefoxの場所/「素晴らしい」バーをcontrol-lを使用してどこからでも開くことができます。これは、Acrobatのcontrol-lが全画面表示になるためです。それは動作しますが、それは醜いですし、ネストされた#ifWinNotActiveを使用します。複数の条件文を使用したホットキーif文

#IfWinNotActive, ahk_class MozillaWindowClass 
#IfWinNotActive, ahk_class ahk_class AcrobatSDIWindow 
^l:: 
WinActivate, ahk_class MozillaWindowClass 
Send, ^l 
return 
#IfWinNotActive 
#IfWinNotActive 

以下のコードの置換は機能しません。 Autohotkeyはエラーには言及しませんが、!WinActive条件を無視し、無限ループに巻き込まれるように見えます。なぜどんなアイデア? (私は閉じ括弧の前と後の両方return文を試してみました。)

^l:: 
if (!WinActive(ahk_class,MozillaWindowClass)) and (!WinActive(ahk_class,AcrobatSDIWindow)) { 
    WinActivate, ahk_class MozillaWindowClass 
    Send, ^l 
} 
return 
+0

スクリプトが何をしているのか(ハイレベル)気になりますか? – Coffee

+1

@Adel私の編集を参照してください。 –

答えて

7

をWinActive機能を使用すると、引用符に周りahk_class MozillaWindowClass
を必要としますが、カンマは必要ありません。無限ループは、hook$を追加することで解決できます。あなたが古くなっている基本的なAutoHotkeyをし、使用している場合、それをこのように書いしかし

$^l:: 
if (!WinActive("ahk_class MozillaWindowClass")) 
    and (!WinActive("ahk_class AcrobatSDIWindow")) 
{ 
    WinActivate, ahk_class MozillaWindowClass 
    Send, ^l 
} else 
    Send, ^l 
Return 

は、必要なだけです。
AutoHotkey_Lにアップグレードしないと正当な理由がない限り(そうは思われません)
#If directiveで最初の例で試していたことを達成できます。

#If !WinActive("ahk_class CalcFrame") && !WinActive("ahk_class Notepad") 

^l:: 
Run, notepad 
Winwait, ahk_class Notepad 
Send, test 
Return 

f1::traytip,, test 

#If 

符号化として
計算機及び/又はメモ帳が現在アクティブでない場合、この例ではCtrlキー + LF1のみ動作する、
それらは通常どおり、さもなければそれらが作用します。

AutoHotkeyの略語に精通していない人には、!は意味しません。