ウィンドウからタイトルバー、フレームなどを削除するWindowsプログラム?


30

全画面表示ではなく、ウィンドウモードでコンピューターゲームをプレイするのが好きです。タイトルバー、フレーム、その他のUIジャンクをじっと見つめるのは好きではありません。また、デスクトップのウィンドウの周りに他のものが表示されるのも好きではありません。他のアプリケーションから任意のウィンドウのUIクロムを取り除く簡単なWindowsプログラムはありますか?黒い画面をウィンドウの下に配置してデスクトップを隠す簡単な方法のための追加ポイント。

注:デスクトップサイズよりも小さいウィンドウを処理することを特に検討しています。ウィンドウをデスクトップのサイズに正確に合わせ、すべてのUI装飾が画面外に表示されるように配置する、さまざまな「ウィンドウ最大化」オプションがあります。(例:ShiftWindow)。デスクトップサイズよりも小さいウィンドウからすべての装飾を削除しようとしています。


ただし、特定の用途では、どのゲームに依存します。ウィンドウが表示されている場合、ゲームは通常のプログラムのようには動作しません。たとえば、このウィンドウの装飾さえ処理せず、画面の左上隅に直接描画するものもあります。実際のところ、ゲームのレンダリング方法や、それぞれがウィンドウモードを処理する方法に依存する可能性があるため、「ユニバーサル」ソリューションを見つけるのは難しいかもしれません。
グヌーピ

回答:


15

ブードゥームのコメントを読んだ後、自分の目的のために作った小さなもの。左上隅に移動し、私のフル解像度にサイズ変更します。以前の状態に復元します。複数のアプリと同時に使用することはできません。

おかげでvoodoomsr

;-Caption
LWIN & LButton::
SetTitleMatchMode, 2
WinGetPos, X, Y, Width, Height, A
WinSet, Style, -0xC00000, A
WinMove,A,,0,0,1920,1080
return
;

;+Caption
LWIN & RButton::
WinSet, Style, +0xC00000, A
WinMove,A,,%X%,%Y%,%Width%,%Height%
Sleep, 1000
Sleep, 1000
return
;

編集:

TBHサイズ変更はできないが何も見つからないウィンドウに役立つものを見つけようとしました(不可能だとは言わず、これが実際に最初のAutohotkeyスクリプトでした)。

とにかく、不要なスリープを削除するなど、いくつかの調整を行いました。ネルソンが提案したスタイルを使用し、ダブルクリックしても保存された変数が上書きされないようにボタンを1つだけ使用します。

#SingleInstance force

; Exclude the desktop
; Note: Also excludes "My Computer" browsing windows.
;       Better detection might be needed to differentiate the parent explorer "ahk_id" from child windows.
;       Also seems to disregard accidental Metro interface clicks (Win 8+)
#IfWinNotActive ahk_exe explorer.exe

; Set your resolution (minus decorations like start bars if you wish to leave those on-screen.
w = 1920
h = 1080
w_wasted = 6 ; width used by resize bars
h_wasted = 29 ; width used by caption frame and resize bars

; Window to fullscreen
LWIN & LButton::
  SetTitleMatchMode, 2
  WinGet Style, Style, A

  ; 0xC40000 = WS_BORDER (0x800000) + WS_DLGFRAME (0x400000) + WS_SIZEBOX aka WS_THICKFRAME (0x040000)
  if(Style & 0xC00000) { ; if has WS_CAPTION. Ignore sizebox value.
    WinGetPos, X, Y, Width, Height, A
    WinSet, Style, -0xC40000, A ; removes attributes, including sizebox...doesn't do a strict subtraction
    WinMove,A,,0,0,w,h
  } else {
    WinSet, Style, +0xC40000, A
    ; Note: will set WS_SIZEBOX even if not previously present
    if(Width > w - w_wasted) { 
      Width := %w%-%w_wasted%
    }
    if(Height > h - h_wasted) {
      Height := %h%-%h_wasted%
    }
    WinMove,A,,%X%,%Y%,%Width%,%Height%
  }
  WinSet Redraw
  Return

1
おかげで、それは私が望んでいたものに非常に近いです!うまく機能しない唯一のことは、ウィンドウのサイズ変更を拒否した場合です。デスクトップが後ろに見える左上に表示されます。後ろを黒で中央揃えするのが望ましいでしょう。ただし、ウィンドウのサイズを変更できる場合は素晴らしいです。1つの小さな調整:スタイル0xC40000はよりうまく機能するようで、サイズ変更ハンドルも削除されます。また、あなたはいくつかの睡眠を残しました:彼らは必要ですか?
ネルソン

@Nelsonウィンドウのサイズ変更を拒否する場合は、WinMaxmizeおよびWinRestroe(auot-hideタスクバーを使用)を使用するだけでよい場合があります。
12

2番目のスクリプトはWindows 10で完全に動作します。本当にありがとうございました。
ルーカス

@Lucas喜んでお手伝いしますが、まだ自分でも使用しています!
ミクズ

デスクトップをアクティブウィンドウとして誤ってこのスクリプトを使用すると、最初にデスクトップにキャプションバーが表示され、アイコンが下に移動します。もう一度実行すると、フラットアイコンが消えます。そのため、ウィンドウがメインのexplorer.exeであるかどうかを検出し、キー+マウスストロークを無視するものが必要です。(Windowsクラシック型インターフェイスを使用して8.1に勝ちます)
-mpag

19

このautohotkeyスクリプトを使用してください:

;-Caption
LWIN & LButton::
WinSet, Style, -0xC00000, A
return
;

;+Caption
LWIN & RButton::
WinSet, Style, +0xC00000, A
return
;

http://www.autohotkey.com/download/からautohotkeyをダウンロードできます。ファイルを拡張子.ahkで保存し、他のアプリケーションと同様に実行します。

使用法:

タイトルバーを削除するにはLWindowButton +左クリック

タイトルバーを復元するにはLWindowButton +右クリック


これは、私の質問superuser.com/questions/664559/…のような他のケースでも機能しますが、たとえばGoogle Chromeやそのウィンドウアプリには影響しません。ここにヒントはありますか?それらはカスタムメイドのバーだと思う
...-igorsantos07

7

これは、任意のウィンドウのタイトルバーを削除できるプログラムです。これを行うには、[スタイル]タブに切り替えてWS_DLGFRAMEをオフにするよりも、WinExplorerツリービューでゲームウィンドウを選択する必要があります。


これは、インターネット上で最高のプログラムの1つです。私は何年も使用しています。システムトレイで実行し、特定のアプリに設定したすべての設定を復元できる機能があればいいのにと思います。すなわち、ある種のプロファイルのサポート。
悪魔の擁護者

このプログラムを実行する必要があり、ゲームを実行するたびにこれを実行しますか?
ニコライ・レショフ

3

AutoHotKeyと自動非表示タスクバーを使用します。

LWin & f::

WinGet Style, Style, A
if(Style & 0xC40000) {
  WinSet, Style, -0xC40000, A
  WinMaximize, A 

} else {
  WinSet, Style, +0xC40000, A
  WinRestore, A
}
return

なぜ使用WinMaxmizeAsdの回答のコメントを参照してください。


正常に動作します。2つのキーを無駄にするのではなく、トグルモードを使用します。
16


1

これは、HydrogenAudioフォーラムで見つけました。

以下に、ウィンドウタイトルバーのないFoobar 2000のスクリーンショットを示します。

ここに画像の説明を入力してください

使用されるプログラムは Flashデスクトップ(シェアウェア)ます

残念ながら、彼らは目標を達成するためのプログラム設定については詳しく説明していませんが、タイトルバーなしでウィンドウを移動する問題については詳しく説明していません。WindowBlindsも言及されています。


0

コーディングでき、Vista以降を実行している場合、DWMサムネイルをアプリケーションに登録するプログラムを作成するのは非常に簡単で、このサムネイルに枠なしのウィンドウコンテンツのみを表示するように選択できます。また、このオーバーレイプログラムからのすべての入力を何らかの方法でゲームに転送する必要がありますが、これもそれほど複雑ではありません。


0

私はもうWindowsを実行していないので、これをテストすることはできませんが、Borderless Gamingはこの問題を解決する有望なオープンソースアプリです。実行中のアプリケーションのリストが表示され、いずれかを選択してウィンドウを操作できます。


10行のAutoHotKeyの多くのコード。
16

0

特定のウィンドウで問題が発生していました。@ weakishのメソッドとMikuzのフレームワークでは、最大化されたウィンドウに対して正しいウィンドウサイズが使用されますが、正しい位置には移動しませんでした。

これが私のahkソリューションです

;
; AutoHotkey Version: 1.x
; Language:       English
; Platform:       Win2000+
; Author:         mpag derived from Mikuz
;
; Script Function:
;    Window to "supermaximized". mpag solution from http://superuser.com/q/38687/319748
;    If you want fullscreen (no toolbars) try replacing calls to function WinSuperMax with WinFullscreen
; This script may still be in development
; Bugs:
;    1) Doesn't display scrollbars in standard maximized screen if it lost them upon supermax (unless you restore and re-maximize)
;    2) If supermaxing a background window that has menus within the Caption bar (e.g. firefox), you functionally just maximize but lose the min/restore/close buttons. Probably has something to do with the Style value.
; Memory Management/Clarity:
;    3) Doesn't clear G_ variable values before each run. if the number of monitors (virtual or otherwise) reduces, values for higher monitor numbers will still be set, but MonCount should still be valid and restrict use. also picks first match.

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
#SingleInstance force

SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

MonGetCoords() {
  global ; for setting
  SysGet G_MonCount, MonitorCount
  loop %G_MonCount% {
    SysGet G_MonWA%A_Index%, MonitorWorkArea, %A_Index%
    SysGet G_MonFS%A_Index%, Monitor, %A_Index%
  }
}

GetMon4xy(ByRef x="", ByRef y="", ByRef m="") {
  global ; getting
  local l:=0, u:=0
  m := 0 ; even if sent, we want to clear it
  loop %G_MonCount% {
    l := G_MonFS%A_Index%Left
    u := G_MonFS%A_Index%Right
    if x not between %l% and %u%
      continue 
    l := G_MonFS%A_Index%Top
    u := G_MonFS%A_Index%Bottom
    if y not between %l% and %u%
      continue 
    m := A_Index
    break
  }
}

WinSetSz(d, mp) {
  global
  local l, r, t, b
  l := %mp%Left
  r := %mp%Right
  t := %mp%Top
  b := %mp%Bottom
  WinMove ahk_id %d%, , l, t, r - l + 1, b - t + 1
  return
}

WinSuperMax(d, m) {
  mp = G_MonWA%m% ; the text of the name of the pointer
  WinSetSz(d, mp)
  return
}

WinFullscreen(d, m) {
  mp = G_MonFS%m%
  WinSetSz(d, mp)
  return
}

; Exclude the desktop
; Note: Also excludes "My Computer" browsing windows.
;       Better detection might be needed to differentiate the parent explorer "ahk_id" from child windows.
;       Also seems to disregard accidental Metro interface clicks (Win 8+).
;       May wish to verify that not only is explorer not the active window, but it wasn't the clicked-in window.

#IfWinNotActive ahk_exe explorer.exe

LWIN & LButton::
RCtrl & LButton::
  SetTitleMatchMode, 2

; monitor bounds and clicked window hwnd
  cm = %A_CoordModeMouse% ; not autoset in older AHK, but shouldn't matter as default is Screen
  CoordMode Mouse, Screen
  MouseGetPos mpx, mpy, d ; was d := WinExist("A") but that would go for the active window, rather than the clicked-in-window
  CoordMode Mouse, %cm%
  MonGetCoords()
  GetMon4xy(mpx, mpy, mpm)

; toggle the style
  WinGet Style, Style, ahk_id %d%
; 0xC40000 = WS_BORDER (0x800000) + WS_DLGFRAME (0x400000) + WS_SIZEBOX or WS_THICKFRAME (0x040000)
  if(Style & 0xC00000) { ; if has WS_CAPTION (WS_BORDER+WS_DLGFRAME) we want to supermax it
    v%d%decs := Style & 0x040000 ; decorations, specifically WS_SIZEBOX
    WinGet v%d%mm, MinMax, ahk_id %d% ; -1=min, 0=normal, 1=max
    WinSet Style, -0xC40000, ahk_id %d% ; removes most window decoration, including WS_SIZEBOX if applicable
; if a "normal" window, get the coords and maximize. If minimized, maximize. If maximized, make sure correctly positioned
    if(!v%d%mm) { ; normal window
      WinGetPos v%d%x, v%d%y, v%d%w, v%d%h, ahk_id %d%
    } if(v%d%mm < 1) { ; normal or minimized
      WinMaximize ahk_id %d% ; set flag to maximized to preserve windows' restore button functionality upon un-supermax to maximized screen
    } 
    WinSuperMax(d, mpm) ; it is now supermaximized. Now make sure it's positioned correctly
  } else { ; it's super-maximized already, so need to restore it to former position.
    if (v%d%decs) {
      WinSet Style, +0xC40000, A ; set WS_SIZEBOX and WS_CAPTION
    } else {
      WinSet Style, +0xC00000, A ; set only WS_CAPTION
    }
    if(v%d%mm = 0) { ; not either previously Maximized nor previously Minimized
      WinRestore ahk_id %d% ; restore standard window + set MinMax flag to non-maxxed 
    } else {
      WinSuperMax(d, mpm) ; Maximized flag should still be set
    }
  }
  WinSet Redraw
;  ListVars
  Return

-1

周囲にWindows UIがなく、黒い背景、つまりゲームだけでゲーム以外のウィンドウが必要な場合は、単に全画面モードで実行してみませんか?ウィンドウモードでは、バックグラウンドで別のアプリを実行している場合、Alt-Tabのパフォーマンスがわずかに速くなるという状況になりますか?

画面サイズよりも小さく、気晴らしのない再生画面がある場合は、(LCD画面を使用していると仮定して)通常はゲームのフルスクリーンモードで実行できますが、解像度はわずかに低くなりますお使いのLCDのネイティブ解像度よりも、多くのLCDスクリーンは、その結果、黒い境界線で画面を表示します。


より高速なAlt-Tabのパフォーマンスを探しています。実際にはそれ以上です。2台目のモニターがあり、その上にマウスを移動できるようにしたい。
ネルソン

まあ、私はデュアルモニター設定でゲームをし、同じ理由でほとんどのゲームをウィンドウモードで実行します。個人的には、私は通常、ゲームの解像度をその画面の解像度と同じに設定し、手動でドラッグしてタイトルバーが画面の上部から外れるようにします。
GAThrawn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.