ウィンドウを常に最前面に表示する方法【AutoHotKey】

公開日:  

autohotkey


ウィンドウを常に手前に表示する方法を紹介します。
ウィンドウを常に最前面に表示できるようになると、Youtubeなどで動画や生放送を見ながら別の作業をするというのも簡単にできるようになると思います。

こんな感じになるよ

こんな感じになるよ

色んなやり方がありますが、このページではAutoHotKeyを使用する方法を説明します。
AutoHotKeyはキーボードのショートカットをカスタマイズできるソフトです。自分でスクリプトを記述して色んな処理を行わせることができます。。

環境

  • Windows 10
  • AutoHotKey 1.1.30.03

AutoHotKeyのダウンロード

以下のダウンロードページからダウンロードします。

今回はzip版を使いますので、「Download AutoHotkey .zip」のリンクをクリックしてダウンロードしてください。

zip版のリンクをクリックする

zip版のリンクをクリックする

zipファイルを展開すると中にプログラムが入っています。

展開した中身

展開した中身

この中のAutoHotKey*.exeを使いますが、まだ実行しません。スクリプトを作成する必要があります。

スクリプトを作成する

メモ帳を開いて以下を記述してください。

#z::Winset, AlwaysOnTop, , A

これは次の意味になります(厳密ではないかもしれませんが)。

  • [Win]+[z](#z)を押したら、アクティブなウィンドウ(A)を最前面表示(AlwaysOnTop)にする(Winset

[Win]+[z]キーが気に入らなければ別のキーを割り当てることもできます。その場合はスクリプトを書き換えてください(参考)。

書けたらファイルを保存します。my.ahkというファイル名で保存しました。保存する場所はどこでもいいので、後で分かる場所に保存しておきます。

ファイルを保存

ファイルを保存

これで準備完了です。あとはこのファイルをAutoHotKeyに読み込ませて実行します。

実行する

まず、コマンドプロンプトを開きます。
[Win]+[r]を押すと「ファイル名を指定して実行」のウィンドウがでるので、「cmd」と入力して[Enter]を押せばコマンドプロンプトを開くことができますよ。

コマンドプロンプトを起動する

コマンドプロンプトを起動する

コマンドプロンプトが開けたら、以下の形式でコマンドを入力して、[Enter]を押せば実行できます。

"AutoHotkey*.exeのパス" "作成した.ahkファイルのパス"

ファイルパスは、ファイルを [Shift]+右クリック > 「パスのコピー」でコピーできるので、それをコマンドプロンプトに貼り付ければいいです。

AutoHotKeyを実行する

AutoHotKeyを実行する

実行に成功するとAutoHotKeyはタスクトレイに常駐します(先ほど書いたスクリプトが実行できるようになります)。

AutoHotKey実行中

AutoHotKey実行中

PC起動時に自動で実行してほしい場合は、スタートアップに設定しておけばよいです(特に説明はしません)。

AutoHotKeyを終了するにはタスクトレイのアイコンを右クリックして「Exit」を押せば終了します。

動作を確認する

先ほど作成したスクリプトが正しく取り込まれていれば、最前面に固定したいウィンドウを選択して[Win]+[z]キーを押せば最前面表示になります。他のソフトよりも常に手前にある状態になります。
最前面に固定したウィンドウを最小化すれば他のソフトも見えるようになります。もう一度同じウィンドウを表示すればまた最前面に固定されます。

解除したい場合は、同じウィンドウを選択してもう一度[Win]+[z]キーを押してください。元に戻ります。

最後に

最後にもうちょっと使いやすくしたスクリプトを貼っておきます。
[Win]+[z]キーで切り替えるのは同じですが、メッセージを出して切り替わりを分かりやすくしています。

; [Win]+[z] ウインドウを常に最前面に表示する
#z::
    Winset, AlwaysOnTop, , A

    WinGetTitle, windowTitle, A

    isAlwaysOnTop := IsWindowAlwaysOnTop(windowTitle)

    ; 最前面表示ONになった場合、他のウィンドウは最前面OFFにする
    if isAlwaysOnTop {
        WinGet, windowTitleList, List, , , %windowTitle%
        Loop, %windowTitleList% {
            StringTrimRight, this_id, windowTitleList%A_Index%, 0
            Winset, AlwaysOnTop, Off, ahk_id %this_id%
        }
    }

    ; メッセージ表示
    ShowMessage(isAlwaysOnTop)

    Sleep 2000 ; 2秒待つ

    ; メッセージ消す
    HideMessage()
    return

    ShowMessage(isAlwaysOnTop) {
        if isAlwaysOnTop {
            message := "Active window is `nnow `nalways on top."
        }
        else {
            message := "Active window is `nno longer `nalways on top."
        }
        Progress, B ZH0 FS18 WS700 CTEEEEEE CW333333, %message%, , , Segoe UI
    }

    IsWindowAlwaysOnTop(windowTitle) {
        WinGet, windowStyle, ExStyle, %windowTitle%
        return (windowStyle & 0x8) ; 0x8 is WS_EX_TOPMOST.
    }

    HideMessage() {
        Progress, Off
    }

以上です。