web-dev-qa-db-ja.com

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

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

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

32
Nelson

Voodoomsrのコメントを読んだ後、私が目的のために作成した小さな何か。左上隅に移動し、私の最大解像度にサイズ変更します。以前と同じように復元します。複数のアプリで同時に使用することはできません。

ありがとう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スクリプトでした)。

とにかく、不要なスリープを削除する、Nelsonが提案したスタイルを使用する、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
16
Mikuz

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

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

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

ここからオートホットキーをダウンロードできます http://www.autohotkey.com/download/ 。拡張子.ahkを付けてファイルを保存し、他のアプリケーションと同じように実行します。

使用法:

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

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

19
mjsr

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

8
Blza

AutoHotKeyと自動非表示タスクバーの使用。

LWin & f::

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

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

WinMaxmizeを使用する理由 Asdの回答 のコメントを参照してください。

3
weakish

CutAway Skrommelがあなたのやりたいことをするかもしれません。

Cut Away

2
Richard

私はこれをHydrogenAudioフォーラムで見つけました:

ウィンドウのタイトルバーを除いたFoobar 2000のスクリーンショットは次のとおりです。

enter image description here

使用されるプログラムは Flash Desktops (シェアウェア)と呼ばれます

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

1
Molly7244

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

0
Nelson

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

0
mmmmmm

@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
0
mpag