AutoHotKeyでMaximize -> Restoreのトグル
AutoHotKeyはWindowsのあらゆるキーの組み合わせやマウス動作などをカスタマイズできる常駐ソフトです。Win32API的な生コントロールも可能なので、いろいろ細かいこともできます。またちょっとしたスクリプト言語も内蔵しています。お陰で、これさえあれば毎日の単純作業の数々を指一本で(いや指二本か三本くらいか・・・)で「あっ」という間にできてしまうという、アルキメデスもびっくりなレバレッジツールになっています。
しかしまあ、それだけ凄いツールだとそれなりに使うのも大変です。Commandだけでも270程度あり、しかも各コマンド(サブコマンド)の仕様が結構深かったりします。いろいろわからないことも出てくるのですよね。。。
ウィンドウの最大化&元に戻す
最大化自体はコマンドとしてあるんです。WinMaximizeがそれです。しかし、どうせ最大化できるなら元に戻す、もほしいところです。もちろんあります。WinRestoreがそれです。
解決?
いやいやいやいや
別々バインディングなんていやだ。トグルしてほしい! しかしですね、Toggleなんちゃらは無いんです。めんどーだったので、導入したときは別キーに割り当ててたのですが、流石にかっこわるい。
というわけでスクリプト書こうか、となるわけですが、現在Maximizeされてるかどうかってどうやって調べたらいいの?が見つけられない!
A_ScreenWidth, A_ScreenHeight てのがあるのでこれとWinGetPosしたモノで、、、ダメです。タスクバーやgoogle desktop、またウィンドウ自体のデコレーションから、最大化したときに画面サイズ通りになるかどうかはわかりません。
ちと調べてみるとどうやらクラッシックテーマでは最大化時にX,Yが-4になるようです。
#f:: ;; Win-fにマッピング WinGetPos, X, Y, , , A ;; judge If X = -4 and Y = -4 ;; judge WinRestore, A else WinMaximize,A Return
なるほど、ダサイ。かっこわるい。しかもです、これだとクラッシック以外でどうなるか不明(調べてません><)。その上、ぴったりこの位置にウィンドウ持ってくると動作しません。全然だめじゃん
ヘルプは全文フル検索しりゃ!
フル検索で Maximizeを引っ張ったら一発でした。
WinGet, maxp, MinMax, A ;; judge If maxp = 1 ;; judge
上のjudgeの部分をこれに置き換えればオK。
ついでに最大化した時に Transparent を 220にして、うっすら下が見えるようにしました。なかなかイイっ
結論
自分の目で見つけられないことは、コンピュータにやってもらえ