先日、左手デバイスの Stream Deck を購入しました。
Stream Deck はボタン一つでアプリ起動や操作ができてすごく便利!
かなり優秀な左手デバイスでした。
でも一つだけ不満があります・・・
Stream Deck のデフォルト挙動の問題点
その不満はずばり・・・
アプリ起動ボタンを押すと毎回新規ウィンドウで立ち上がる!!!!!
起動しているアプリのウィンドウを呼び出したいのに
デフォルトの設定のままボタンを押すと
新規ウィンドウが開き、それをマウスで閉じる
効率を上げるために導入したのに逆に手間が増えている…
理想とする Stream Deck の挙動
次のような仕様なら便利だと思いませんか?
・アプリ未起動なら起動
・アプリ起動済みならウィンドウを前面へ
・ウィンドウが前面にあるなら最小化
いわゆる、トグル動作にしたい!
実現方法
いろいろ試行錯誤して理想通りの挙動を実現しました。
今回救世主となったのはAutoHotkeyでした。
AutoHotkey(AHK)は、Windows上の操作を自動化できるスクリプト言語です。
キーボードやマウス操作の割り当てだけでなく、
ウィンドウの検出・切り替え・最小化なども柔軟に制御できます。
今回はStreamDeckのボタンから実行する用途として使用しました。
難しく書いてありますが、今回はコピペで誰でもまねできるようにしているので安心してください。
StreamDeckとAHKの相性は抜群です。
・AHKで処理を作成
・StreamDeckのボタンでAHKを起動
つまり、ボタン一つでいろんなことができるようになります。
AutoHotkeyは公式サイトから無料でインストールできます。
現在は v1 と v2 があり、この記事では v1 を使用しています。
(StreamDeck連携や既存スクリプトとの相性を考慮)
実装した仕組みの概要
・ウィンドウが存在するか確認
・アクティブかどうか判定
・状態によって処理を分岐
ウィンドウが存在?
├ No → アプリ起動
└ Yes
├ 前面 → 最小化
└ 背面 → 前面表示
AHK作成
まず、対象となるアプリのexeファイルのショートカットを作成
テキストファイルを作成し以下のコードを張り付ける
; 対象アプリのウィンドウが存在するか確認
IfWinExist, ahk_exe sample.exe
{
; すでに前面にある場合は最小化
IfWinActive, ahk_exe sample.exe
{
WinMinimize
}
Else
{
; 背面にある場合は前面に表示
WinActivate
}
}
Else
{
; ウィンドウが存在しない場合はアプリを起動
Run, "C:\sample\sample.lnk" ;作成したショートカットのパス
}
コードを張りつけたテキストファイルの拡張子を.txtから.ahkに変更する
これでAHKの作成は完了です
※sample.exeの部分は実際に利用するアプリのファイル名を入れてください
StreamDeckに割り当てる
作成したAHKをStreamDeckのボタンに割り当てていきます
StreamDeckの設定ソフトを起動
ボタンに「システム→開く」を割り当て
App / ファイル に作成した .ahk ファイルを指定
使ってみた感想
超便利になりました。
使いたいアプリがボタン一つでパッと前面に出てきてくれます。
ウィンドウの切り替えがかなり楽になりました。
まとめ
この記事では、
Stream Deck のウィンドウ切り替え問題を AutoHotkey(AHK)で解決し、
アプリの起動・前面表示・最小化をトグル動作で切り替える方法を紹介しました。
Stream Deck はそのままでも便利な左手デバイスですが、
AutoHotkey を使うことでウィンドウ切り替えやアプリ起動の挙動を
自分好みにカスタマイズできます。
毎回新規ウィンドウが立ち上がる問題に悩んでいる方や、
作業効率を上げたい方の参考になれば幸いです。
