Windowsで作業しているとき、「アプリのタイトルバーを消して画面いっぱいに表示したい」と感じたことはありませんか?
今回は、AutoHotkey v2を使って「ウィンドウのタイトルバーを消去し、全画面化する」便利なオリジナルツールを紹介します。
スクリプトの概要
機能
本スクリプトは、Windows上のあらゆるウィンドウの「タイトルバー」や「ウィンドウ枠」を動的に削除し、現在起動しているモニターのサイズに合わせて全画面表示するGUIツールです。
作業中のエディタを画面全体に広げることができます。
使用するシチュエーション
- ウィンドウモードのゲームを即座に「ボーダレスフルスクリーン」へ変更したいとき
- マルチモニター環境で、特定のサブモニター側にアプリをピッタリ全画面配置したいとき
- キャプチャソフトで特定のアプリ枠だけを綺麗に収めたいとき
操作方法
使い方はシンプルです。キーボードのショートカットひとつで小さな制御画面が立ち上がり、直感的に操作できます。
基本的な操作手順
-
ツールを起動する
全画面化したいアプリ(例: ゲーム、ブラウザなど)を最前面に表示した状態で、起動キー(初期設定:
Media_Prev/ 前のトラックキー)を押します。すると、画面上に「タイトルバー・全画面ツール」の小窓が表示されます。 起動した時点で、直前にアクティブだったアプリのタイトルが自動的に選択された状態になっています。
-
対象ウィンドウとオプションを確認する
- ウィンドウタイトルを選択または手入力: ドロップダウンリストから、現在開いている他のウィンドウへ切り替えることも可能です。
- 「同時に全画面化する」チェックボックス:
- チェックON(推奨): タイトルバーを消去すると同時に、モニター枠いっぱいに拡大します。
- チェックOFF: 現在のウィンドウサイズ・位置を維持したまま、タイトルバー(外枠)のみを消去します。
-
「表示・全画面の切り替え」をクリックする
「表示・全画面の切り替え」ボタンをクリックします。
一瞬でアプリのタイトルバーと枠線が消え、モニター全域に隙間なくフィットした「ボーダレス全画面状態」に切り替わります。
-
元の状態に戻す(トグル動作)
元のウィンドウ表示(タイトルバーありの標準状態)に戻したい場合は、再度同じ手順で「表示・全画面の切り替え」ボタンを押すだけです。 スクリプト内部で切り替え前の「元の位置・サイズ・スタイル」を記憶しているため、正確に元の表示状態へ復元されます。
設定のカスタマイズ(ショートカットキーの変更)
スクリプト冒頭にある【設定エリア】を書き換えることで、ツールを呼び出すショートカットキーを自由に変更できます。
; ==============================================================================
; 【設定エリア】 お好みに合わせて右側の値を変更してください
; ==============================================================================
CONFIG_LAUNCH_KEY := "Media_Prev" ; GUIをその場で作成・表示するキー
例えば、キーボードの F11 や
Ctrl + Shift + F
で起動したい場合は、以下のように変更して保存してください。
; F11キーで起動したい場合
CONFIG_LAUNCH_KEY := "F11"
; Ctrl + Shift + F で起動したい場合
CONFIG_LAUNCH_KEY := "^+f"
使用上の注意点
本スクリプトを快適に使用するために、以下の注意点をご確認ください。
AutoHotkey v2 専用スクリプト
本コードは AutoHotkey v2.0 以降 の文法で記述されています。旧バージョン(v1.1系)では動作しませんので、実行環境のバージョンにご注意ください。
スクリプト終了時の状態復元
ツールでウィンドウを全画面化したままAHKスクリプト自体を終了してしまうと、ウィンドウ位置の履歴データ(winHistoryTitle)が消去されます。元に戻せなくなるのを防ぐため、アプリの表示を元の状態に戻してからスクリプトを終了することをおすすめします。
コード全文
コード全文です。
#Requires AutoHotkey v2.0
SetTitleMatchMode(2) ; タイトル検索を「部分一致モード」に設定
; ==============================================================================
; 【設定エリア】 お好みに合わせて右側の値を変更してください
; ==============================================================================
CONFIG_LAUNCH_KEY := "Media_Prev" ; GUIをその場で作成・表示するキー
; ★ ポップアップ化によりOSの枠が完全に消えるため、
; 理論上はすべて「0」で画面ピッタリに収めます。
CONFIG_PAD_LEFT := 0
CONFIG_PAD_TOP := 0
CONFIG_PAD_RIGHT := 0
CONFIG_PAD_BOTTOM := 0
; ==============================================================================
Hotkey(CONFIG_LAUNCH_KEY, LaunchTitleTool)
global winHistoryTitle := Map()
return
; ======= 【キーが押された瞬間に動く処理】 =======
LaunchTitleTool(HotkeyName) {
try {
activeTitle := WinGetTitle("A")
} catch {
activeTitle := ""
}
if WinExist("タイトルバー・全画面ツール") {
WinActivate("タイトルバー・全画面ツール")
return
}
; 現在開いているすべてのウィンドウから、有効なタイトルの一覧を作成(重複のみ排除)
windowChoices := []
seenTitles := Map()
for winId in WinGetList() {
try {
t := WinGetTitle(winId)
if (t != "" && t != "Program Manager" && t != "Start" && t != "タイトルバー・全画面ツール" && !seenTitles.Has(t)) {
seenTitles[t] := true
windowChoices.Push(t)
}
}
}
myGui := Gui("+AlwaysOnTop", "タイトルバー・全画面ツール")
myGui.Add("Text", "w250", "ウィンドウタイトルを選択または手入力:")
cboCtrl := myGui.Add("ComboBox", "vTargetText w250", windowChoices)
cboCtrl.Text := activeTitle
; --------------------------------------------------------------------------
; 【グループ】 タイトルバー非表示 & 全画面化
; --------------------------------------------------------------------------
myGui.Add("GroupBox", "w250 h80 y+15 Section", "タイトルバー ・ 全画面制御")
myGui.Add("Checkbox", "vShouldFull Checked xs+10 ys+25 w230", "同時に全画面化する")
btnToggle := myGui.Add("Button", "w230 xs+10 y+10", "表示 ・ 全画面の切り替え")
btnToggle.OnEvent("Click", ToggleTitleAction)
myGui.Show()
}
; ======= 【ボタンを押したときに動く:タイトルバー・全画面処理】 =======
ToggleTitleAction(btnObj, *) {
vals := btnObj.Gui.Submit(false)
if (vals.TargetText == "") {
MsgBox("テキストを入力または選択してください。", "エラー", 48)
return
}
targetWin := WinExist(vals.TargetText)
if not targetWin {
MsgBox("「" vals.TargetText "」が含まれるウィンドウが見つかりません。", "エラー", 48)
return
}
style := WinGetStyle(targetWin)
if !(style & 0xC00000) {
if winHistoryTitle.Has(targetWin) {
orig := winHistoryTitle[targetWin]
WinSetStyle(orig.Style, targetWin)
WinSetExStyle(orig.ExStyle, targetWin)
WinMove(orig.X, orig.Y, orig.W, orig.H, targetWin)
winHistoryTitle.Delete(targetWin)
} else {
WinSetStyle("+0xCF0000 -0x80000000", targetWin)
}
WinRedraw(targetWin)
}
else {
exStyle := WinGetExStyle(targetWin)
WinGetPos(&X, &Y, &W, &H, targetWin)
winHistoryTitle[targetWin] := {Style: style, ExStyle: exStyle, X: X, Y: Y, W: W, H: H}
if (vals.ShouldFull) {
if WinGetMinMax(targetWin) = 1 {
WinRestore(targetWin)
}
centerX := X + (W / 2)
centerY := Y + (H / 2)
targetMonitor := 1
loop MonitorGetCount() {
MonitorGet(A_Index, &mLeft, &mTop, &mRight, &mBottom)
if (centerX >= mLeft && centerX <= mRight && centerY >= mTop && centerY <= mBottom) {
targetMonitor := A_Index
break
}
}
MonitorGet(targetMonitor, &mLeft, &mTop, &mRight, &mBottom)
targetX := mLeft - CONFIG_PAD_LEFT
targetY := mTop - CONFIG_PAD_TOP
targetW := (mRight - mLeft) + CONFIG_PAD_LEFT + CONFIG_PAD_RIGHT
targetH := (mBottom - mTop) + CONFIG_PAD_TOP + CONFIG_PAD_BOTTOM
}
WinSetStyle("-0xCF0000 +0x80000000", targetWin)
WinSetExStyle("-0x200 -0x100", targetWin)
try DllCall("SetMenu", "Ptr", targetWin, "Ptr", 0)
if (vals.ShouldFull) {
WinRedraw(targetWin)
loop 5 {
WinMove(targetX, targetY, targetW, targetH, targetWin)
Sleep(50)
WinGetPos(,, ¤tW, ¤tH, targetWin)
diffW := targetW - currentW
diffH := targetH - currentH
if (Abs(diffW) <= 2 && Abs(diffH) <= 2) {
break
}
targetW += diffW
targetH += diffH
}
}
}
}
まとめ
今回のツールを使用すれば、標準機能では全画面化できないアプリも、簡単に全画面化して快適に作業することができるようになります。
皆さんの参考になれば幸いです。