Windows-Programm zum Entfernen von Titelleiste, Rahmen usw. aus einem Fenster?

30

Ich spiele gern Computerspiele im Fenstermodus und nicht im Vollbildmodus. Ich mag es nicht, auf die Titelleiste, den Frame und anderen UI-Müll zu starren. Ich mag es auch nicht, andere Dinge auf meinem Desktop am Fenster zu sehen. Gibt es ein einfaches Windows-Programm, mit dem die Benutzeroberfläche eines beliebigen Fensters aus einer anderen Anwendung entfernt werden kann? Zusätzliche Punkte für eine einfache Möglichkeit, einen schwarzen Bildschirm unter dem Fenster zu platzieren und den Desktop zu verbergen.

Hinweis: Ich arbeite speziell mit Fenstern, die kleiner als meine Desktopgröße sind. Es gibt eine Vielzahl von Optionen für die maximale Fenstergröße, mit denen ein Fenster genau auf die Desktopgröße angepasst und so positioniert wird, dass alle Benutzeroberflächendekorationen außerhalb des Bildschirms angezeigt werden. (ZB: ShiftWindow). Ich versuche, alle Dekorationen von einem Fenster zu entfernen, das kleiner als die Desktopgröße ist.

Nelson
quelle
Für Ihren speziellen Einsatz kommt es jedoch darauf an, welches Spiel Sie spielen. Spiele verhalten sich in Fenstern nicht wie normale Programme. Einige kümmern sich nicht einmal um diese Fensterdekoration und zeichnen beispielsweise direkt in die linke obere Ecke des Bildschirms. Tatsache ist, dass es schwierig sein könnte, eine "universelle" Lösung zu finden, da dies davon abhängen kann, wie das Spiel gerendert wird und wie jeder mit dem Fenstermodus umgeht.
Gnoupi

Antworten:

15

Nur etwas Kleines, das ich für meine Zwecke gemacht habe, nachdem ich den Kommentar von voodoomsr gelesen hatte. Lässt es nach links gehen und passt die Größe auf meine volle Auflösung an. Stellt wieder her, wie es vorher war. Kann nicht gleichzeitig mit mehreren Apps verwendet werden.

Vielen Dank 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
;

BEARBEITEN:

TBH Ich habe versucht, etwas Nützliches für Fenster zu finden, deren Größe sich nicht ändern lässt, konnte aber nichts finden (ohne zu sagen, dass dies nicht möglich ist, dies war tatsächlich mein erstes Autohotkey-Skript).

Wie auch immer, ich habe einige Optimierungen vorgenommen, zum Beispiel das Entfernen unnötiger Schlafzustände, indem ich den von Nelson vorgeschlagenen Stil verwendete und ihn mit nur einer Schaltfläche funktionierte, damit Doppelklicken gespeicherte Variablen nicht überschreibt.

#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
Mikuz
quelle
1
Danke, das ist sehr nah an dem, was ich wollte! Das einzige, was nicht gut funktioniert, ist, dass die Größe des Fensters nicht geändert werden kann: Es endet oben links, und der Desktop ist dahinter sichtbar. Mit schwarz hinter zentriert wäre vorzuziehen. Aber wenn das Fenster in der Größe veränderbar ist, ist es großartig. Eine kleine Änderung: Stil 0xC40000 scheint besser zu funktionieren, es werden auch die Ziehpunkte zur Größenänderung entfernt. Du hast auch ein wenig geschlafen: Sind sie notwendig?
Nelson
@ Nelson Wenn Windows die Größenänderung verweigert, können wir möglicherweise einfach WinMaxmize und WinRestroe verwenden (mit automatisch ausgeblendeter Taskleiste).
schwacher
Ihr zweites Skript funktioniert perfekt unter Windows 10. Vielen Dank, genau das, wonach ich gesucht habe!
Lucas,
@Lucas Helft gerne weiter, benutze es auch noch selbst!
Mikuz
Wenn ich dieses Skript versehentlich mit meinem Desktop als aktivem Fenster verwende, wird auf dem Desktop zunächst eine Titelleiste angezeigt und die Symbole werden nach unten verschoben. Wenn ich es erneut starte, verschwinden meine Symbole. Es muss also etwas zu erkennen sein, ob es sich bei dem Fenster um die Hauptdatei explorer.exe handelt, und die Tastenkombination + Mausklick muss ignoriert werden. (Win 8.1 mit Windows Classic-Typ-Schnittstelle)
mpag
19

benutze einfach dieses Autohotkey-Skript:

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

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

Sie können Autohotkey von hier herunterladen http://www.autohotkey.com/download/ . Speichern Sie die Datei mit der Erweiterung .ahk und führen Sie sie wie jede andere Anwendung aus.

Verwendung:

Zum Entfernen der Titelleiste LWindowButton + Linksklick

um die Titelleiste wiederherzustellen LWindowButton + Rechtsklick

mjsr
quelle
Dies funktioniert auch in anderen Fällen, z. B. in der folgenden Frage: superuser.com/questions/664559/… Dies hat jedoch keine Auswirkungen auf beispielsweise Google Chrome oder dessen fenstergesteuerte Apps. Irgendein Hinweis hier? Ich denke, das sind maßgeschneiderte Bars ...
igorsantos07
7

Hier ist ein Programm, das die Titelleiste für jedes Fenster entfernen kann. Dazu müssen Sie das Spielefenster in der WinExplorer-Baumansicht auswählen, dann zur Registerkarte "Stil" wechseln und WS_DLGFRAME deaktivieren.


quelle
Dies ist eines der besten Programme im Internet. Ich benutze es seit Jahren. Ich wünschte wirklich, es hätte die Möglichkeit, in der Taskleiste ausgeführt zu werden und alle Einstellungen wiederherzustellen, die Sie für bestimmte Apps festgelegt haben. dh eine Art Profilunterstützung.
Devil's Advocate
Müssen Sie dieses Programm ausführen und dies jedes Mal, wenn Sie das Spiel ausführen?
Nickolai Leschov
3

Verwenden von AutoHotKey und einer Taskleiste zum automatischen Ausblenden.

LWin & f::

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

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

Warum benutzen WinMaxmize? Siehe Kommentare von Asds Antwort .

schwach
quelle
Funktioniert gut. Ich bevorzuge den Toggle-Modus, anstatt zwei Tasten zu verschwenden.
23.
2

CutAway von Skrommel macht vielleicht das, was Sie wollen.

Wegschneiden

Richard
quelle
1

Das habe ich in den HydrogenAudio-Foren gefunden:

Hier ist ein Screenshot von Foobar 2000 ohne Fenstertitelleiste:

Bildbeschreibung hier eingeben

Das verwendete Programm heißt Flash Desktops (Shareware)

Leider gehen sie nicht wirklich auf die Programmeinstellungen ein, um das Ziel zu erreichen, sondern auf das Problem, Fenster ohne Titelleiste zu verschieben. WindowBlinds wird auch erwähnt.

Gaff
quelle
0

Wenn Sie programmieren können und Vista oder eine neuere Version verwenden, ist es ziemlich einfach, ein Programm zu erstellen, mit dem eine DWM-Miniaturansicht in der Anwendung registriert wird. Anschließend können Sie festlegen, dass nur der Fensterinhalt ohne Rahmen in dieser Miniaturansicht angezeigt wird. Sie müssen auch alle Eingaben von diesem Überlagerungsprogramm auf irgendeine Weise an das Spiel weiterleiten, aber das ist auch nicht besonders kompliziert.


quelle
0

Ich starte nicht mehr mit Windows, kann das also nicht testen, aber Borderless Gaming ist eine vielversprechend aussehende Open Source-App, die dieses Problem löst. Es wird eine Liste der ausgeführten Anwendungen angezeigt, und Sie können eine auswählen, um die Fenster zu bearbeiten.

Nelson
quelle
Viel Code für 10 Zeilen AutoHotKey.
23.
0

Ich hatte Probleme mit einem bestimmten Fenster, das mit der @ weakish-Methode und dem Mikuz-Framework die richtige Fenstergröße für ein maximiertes Fenster annehmen würde, aber nicht an die richtige Position wechseln würde.

Hier ist meine Ahk-Lösung

;
; 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
mpag
quelle
-1

Wenn Sie ein Fenster ohne Windows-Benutzeroberfläche und mit einem schwarzen Hintergrund möchten, dh das Spiel und nichts anderes als das Spiel, können Sie es auch im Vollbildmodus ausführen. Das einzige, was der Fenstermodus in diesem Fall bewirken würde, ist eine etwas schnellere Alt-Tab-Leistung, wenn im Hintergrund eine andere App ausgeführt wird.

Wenn der Spielbildschirm kleiner als der Bildschirm ist und keine Ablenkungen auftreten, können Sie (vorausgesetzt, Sie verwenden einen LCD-Bildschirm) normalerweise im Vollbildmodus des Spiels mit einer etwas niedrigeren Auflösung arbeiten Bei vielen LCD-Bildschirmen wird der resultierende Bildschirm dann mit einem schwarzen Rand umrandet.

GAThrawn
quelle
Ich suche nach einer schnelleren Alt-Tab-Leistung. Eigentlich mehr als das; Ich habe einen zweiten Monitor und möchte meine Maus darauf bewegen können.
Nelson
Fairerweise spiele ich auf einem Dual-Monitor-Setup und führe die meisten Spiele aus demselben Grund im Fenstermodus aus. Persönlich stelle ich normalerweise die Auflösung des Spiels so ein, dass sie mit der Auflösung des Bildschirms übereinstimmt, und ziehe sie manuell so, dass die Titelleiste oben auf dem Bildschirm angezeigt wird.
GAThrawn