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