見出し画像

【AutoHotkey】アプリケーションスイッチャー

AutoHotkeyでアプリケーションスイッチャーを作りました。

AutoHotkeyについてはこちら

指定したアプリのウィンドウかを判別し、ウィンドウを前面化します。
私は左手デバイスで1ボタン起動できるようにしているのでショートカットではなく、実行したら即終了と言う形でやっています。

; アプリケーションの実行ファイル名を変数に格納
app1 := "maya.exe"
app2 := "Photoshop.exe"

; アプリケーション名を変数に格納(メッセージボックス用)
appName1 := StrReplace(app1, ".exe", "")
appName2 := StrReplace(app2, ".exe", "")

; スクリプト開始時に自動的に実行される部分
; 現在アクティブなウィンドウの実行ファイル名を取得
WinGet, activeWindowExe, ProcessName, A

; Autodesk Mayaがアクティブであるかチェック
if (activeWindowExe = app1) {
    ; Photoshopをアクティブにする
    If WinExist("ahk_exe " app2) {
        WinActivate, ahk_exe %app2%
    } else {
        MsgBox, % appName2 "のウィンドウが見つかりませんでした。"
    }
}
; Photoshopがアクティブであるかチェック
else if (activeWindowExe = app2) {
    ; Autodesk Mayaをアクティブにする
    If WinExist("ahk_exe " app1) {
        WinActivate, ahk_exe %app1%
    } else {
        MsgBox, % appName1 "のウィンドウが見つかりませんでした。"
    }
}
; どちらのアプリケーションもアクティブでない場合
else {
    ; Autodesk Mayaをアクティブにしようと試みる
    If WinExist("ahk_exe " app1) {
        WinActivate, ahk_exe %app1%
    } else {
        MsgBox, % appName1 "のウィンドウが見つかりませんでした。"
    }
}

ExitApp  ; プログラムの処理が完了したらプログラムを終了する


ショートカット設定したバージョンはこちら

; ショートカットキーの設定 (Ctrl + Alt + M)
^!m::

; アプリケーションの実行ファイル名を変数に格納
app1 := "maya.exe"
app2 := "Photoshop.exe"

; アプリケーション名を変数に格納(メッセージボックス用)
appName1 := StrReplace(app1, ".exe", "")
appName2 := StrReplace(app2, ".exe", "")


    ; 現在アクティブなウィンドウの実行ファイル名を取得
    WinGet, activeWindowExe, ProcessName, A

    ; Autodesk Mayaがアクティブであるかチェック
    if (activeWindowExe = app1) {
        ; Photoshopをアクティブにする
        If WinExist("ahk_exe " app2) {
            WinActivate, ahk_exe %app2%
        } else {
            MsgBox, % appName2 "のウィンドウが見つかりませんでした。"
        }
    }
    ; Photoshopがアクティブであるかチェック
    else if (activeWindowExe = app2) {
        ; Autodesk Mayaをアクティブにする
        If WinExist("ahk_exe " app1) {
            WinActivate, ahk_exe %app1%
        } else {
            MsgBox, % appName1 "のウィンドウが見つかりませんでした。"
        }
    }
    ; どちらのアプリケーションもアクティブでない場合
    else {
        ; Autodesk Mayaをアクティブにしようと試みる
        If WinExist("ahk_exe " app1) {
            WinActivate, ahk_exe %app1%
        } else {
            MsgBox, % appName1 "のウィンドウが見つかりませんでした。"
        }
    }
return

MAYAなど多重起動して複数ウィンドウがあった場合、直近で使っていたウィンドウが選ばれるようです。

冒頭のショートカットや実行ファイル名を変えることで応用が効くと思います。

; ショートカットキーの設定 (Ctrl + Alt + M)
^!m::

; アプリケーションの実行ファイル名を変数に格納
app1 := "maya.exe"
app2 := "Photoshop.exe"

編集して保存するときはUTF+8(BOM付き)にしないと起動しなかったり文字化けしたりするので注意してくださいね

本スクリプトはAIアシスタントを使って作成しています。

AutoHotkeyよくわからんけど、とにかく使いたいー
という方はコンパイル(exe化)した物があるので自己責任でお使いください。

この記事が気に入ったらサポートをしてみませんか?