AutoHotKey / 文法 / 技術情報 / Windows アプリケーション変数

変数

代入

my_num  := 10        ; "my_num = 10" のように、":=" の代わりに "=" でも代入可能(以下、同様)
my_txt  := "Hello"
my_null := 
my_var2 := my_var1   ; 変数を代入する場合は ":=" で代入する
my_var3 =  %my_var1% ; "=" で代入するには、変数を "%XXX%" と%で包む必要がある

参考

www.autohotkey.com/docs/Variables.htm

AutoHotKey / 文法 / 技術情報 / Windows アプリケーションマルチディスプレイ

マルチディスプレイ

SysGet, MonitorCount, MonitorCount
SysGet, MonitorPrimary, MonitorPrimary
MsgBox, Monitor Count:`t%MonitorCount%`nPrimary Monitor:`t%MonitorPrimary%
  • MonitorCount: モニタの数
  • MonitorPrimary: プライマリモニタの番号(1や2等)
 SysGet, Mon, MonitorWorkArea, 1
 MonHeight := MonBottom - MonTop
 MonWidth := MonRight - MonLeft
 MsgBox, WinX:%WinX%`nWinY:%WinY%`nHeight:%MonBottom%
  • 変数名”Mon”を指定してSysGetすると、変数MonTop/MonBottom/MonRight/MonLeftが自動的に生成される。

マルチディスプレイでの位置情報

 ---------------
| 2             |
|             A |
|               |---------------
|               | 1             |
 ---------------|               |
                |               |
                |               |
                 ---------------

1がメインディスプレイで、2がサブディスプレイの場合、Aの位置は X:-100,Y:-50のようになる。

サブディスプレイのタスクバーを除いた幅と高さ

SysGet, MonWorkArea, MonitorWorkArea, 2
MsgBox, Width:%MonWorkAreaLeft%`nHeight:%MonWorkAreaBottom%

サブディスプレイの番号が2の場合、上のように指定すると、Width:-1024 Height:728のように取得出来る。

参考

ahkwiki.net/SysGet

AutoHotKey / 文法 / 技術情報 / Windows アプリケーションAHK キーバインド

AHK キーバインド

*ワイルドカード

*#c::Run Calc.exe  ; Win+C, Shift+Win+C, Ctrl+Win+C, etc. will all trigger this hotkey.

~チルダ – アンブロック

; 以下はaキーを押下すると、abが押下される
; すなわち、元のaの機能がブロックされない
~a::Send, b

$プリフィクス – 無限ループ防止

; 以下はaキーを押下すると無限にaがsendされる
a::Send, a

; これを避けるため、以下のように先頭に$をつけると、一度だけaがsendされる
$a::Send, a

; なお、以下のようにUseHookをOnにすると、以降すべてのキーバインドが$をつけるのと同等になる
; 基本的にAHKスクリプトの先頭でUseHookをOnにするとよい
#UseHook On

AutoHotKey / 文法 / 技術情報 / Windows アプリケーションウィンドウ

ウィンドウ

アクティブウィンドウ情報の取得

 WinGetPos, WinX, WinY, WinHeight, WinWidth, A
 MsgBox, WinX:%WinX%`nWinY:%WinY%`n

ウィンドウの指定方法

ahkwiki.net/Window

ウィンドウ関連の関数

ahkwiki.net/Commands_Category#window

AutoHotKey / 文法 / 技術情報 / Windows アプリケーションIfWinActiveと#IfWinActiveの違い

IfWinActiveと#IfWinActiveの違い

コマンドとは別に「#」で始まるプリプロセッサ指令のようなものがある。
これは、スクリプトが実行される前の解析の段階で処理されるので、引数に変数の参照を含めることは出来ない。

sites.google.com/site/autohotkeyjp/reference/Scripts

参考

stackoverflow.com/questions/22525478/what-does-hash-mean-when-it-doesnt-mean-windows-key/22534694#22534694

AutoHotKey / 技術情報 / Windows アプリケーション変換キー・無変換キーの利用

変換キー・無変換キーの利用

!sc07B::MsgBox, "CTRL-無変換"
sc07B & z::MsgBox, "無変換-z"
!a::Send, {sc07B}

変換・無変換キーのVKやSCはタスクトレイのAHKをダブルクリックで開いて、メニューの[View] -> [Key history and script info]で確認する。

キー設定

  • sc07B => “無変換
  • sc079 => “変換”

参考

AutoHotKey / 技術情報 / Windows アプリケーションホットキーでなくスクリプト内で修飾キーを判定

ホットキーでなくスクリプト内で修飾キーを判定

x::
+x::
  if (GetKeyState("Shift")) {
    MsgBox with Shift
  } else {
    MsgBox without Shift
  }
  Return

参考

www.autohotkey.com/docs/Scripts.htm

AutoHotKey / 技術情報 / Windows アプリケーションホイールでカーソル下のコントロールを操作

ホイールでカーソル下のコントロールを操作

  • MouseGesture.ahkを使う。
  • lukewarm.s101.xrea.com/myscripts/mousegesture/index.html#action2 の「7.2. ホイールでカーソル下のコントロールを操作」を見る。
  • 「[WheelRedirectUp…」の部分をコピーする。
  • タスクトレイからMouseGesture.ahkの設定を開き、「動作割り当て」タブを開き、「クリップボードからインポート」ボタンを押下する。
  • AHKを再起動する。

AutoHotKey / 技術情報 / Windows アプリケーションファンクションキーでアプリ切り替え

ファンクションキーでアプリ切り替え

F10::
    WinSet, AlwaysOnTop, On, ahk_class Chrome_WidgetWin_0
    WinSet, AlwaysOnTop, Off, ahk_class Chrome_WidgetWin_0
    return
F11::
    WinSet, AlwaysOnTop, On, ahk_class PuTTY
    WinSet, AlwaysOnTop, Off, ahk_class PuTTY
    Click 50,50
    return
  • F10でChrome、F11でPuTTYに切り替える。
  • TopではなくAlwaysOnTopを2度使うのは(たぶん)Windows7ではセキュリティの関係でTopが機能しないから。
  • ClickはPuTTYにカーソルのフォーカスを移すため。

参考

AutoHotKey / 技術情報 / Windows アプリケーションサウンドボリューム制御

サウンドボリューム制御

XP以前

Vista以降