Programma Windows per rimuovere la barra del titolo, il frame, ecc. Da una finestra?


30

Mi piace giocare ai giochi per computer in modalità finestra, anziché a schermo intero. Non mi piace guardare la barra del titolo, il frame e altra spazzatura dell'interfaccia utente. Inoltre, non mi piace vedere altre cose sul mio desktop intorno alla finestra. Esiste un semplice programma Windows che toglierà il cromo dell'interfaccia utente da una finestra arbitraria da un'altra applicazione? Punti extra per un modo semplice per mettere uno schermo nero sotto la finestra, nascondendo il desktop.

Nota: sto cercando specificamente di gestire finestre più piccole delle dimensioni del mio desktop. Esiste una varietà di opzioni "ingrandite a finestra" che rendono una finestra esattamente delle dimensioni del desktop e posizionata in modo che tutte le decorazioni dell'interfaccia utente siano fuori schermo. (Ad esempio: ShiftWindow). Sto cercando di rimuovere tutte le decorazioni da una finestra più piccola delle dimensioni del desktop.


Per il tuo uso particolare, tuttavia, dipende da quale gioco. I giochi non si comportano come un normale programma, quando sono aperti. Alcuni non gestiscono nemmeno questa decorazione della finestra e disegnano direttamente nell'angolo in alto a sinistra dello schermo, ad esempio. Il fatto è che potrebbe essere difficile trovare una soluzione "universale", poiché può dipendere da come viene eseguito il rendering del gioco e da come ciascuno gestisce la modalità finestra.
Gnoupi,

Risposte:


15

Solo qualcosa di piccolo che ho fatto per i miei scopi dopo aver letto il commento di voodoomsr. Fa andare in alto a sinistra e si ridimensiona alla mia massima risoluzione. Ripristina come prima. Non può essere utilizzato con più app contemporaneamente.

Grazie 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
;

MODIFICARE:

TBH Ho provato a trovare qualcosa di utile per Windows che non si ridimensionasse ma non riuscivo a trovare nulla (non dicendo che non è possibile, questo era in realtà il mio primo script Autohotkey).

Beh, comunque, ho apportato alcune modifiche come rimuovere i dormienti non necessari, usando lo stile suggerito da Nelson e farlo funzionare con un solo pulsante in modo che il doppio clic non sovrascriva le variabili salvate.

#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
Grazie, è molto vicino a quello che volevo! L'unica cosa che non funziona bene è se la finestra si rifiuta di ridimensionare: finisce in alto a sinistra con il desktop visibile dietro. Centrato con il nero dietro sarebbe preferibile. Ma se la finestra è ridimensionabile è fantastico. Una piccola modifica: lo stile 0xC40000 sembra funzionare meglio, rimuove anche le maniglie di ridimensionamento. Inoltre hai lasciato dei dormienti: sono necessari?
Nelson,

@Nelson Perché Windows si rifiuta di ridimensionare, forse possiamo semplicemente usare WinMaxmize e WinRestroe (con la barra delle applicazioni auot-hide).
debole

Il tuo secondo script funziona perfettamente su Windows 10. Grazie mille, esattamente quello che stavo cercando!
Lucas,

@Lucas Felice di aiutarti, lo uso ancora anche io!
Mikuz,

Se uso accidentalmente questo script con il mio desktop come finestra attiva, prima il desktop ottiene una barra dei sottotitoli e le icone si spostano verso il basso. Se lo eseguo di nuovo, le mie icone scompaiono completamente. Quindi, ci deve essere qualcosa da rilevare se la finestra è il explorer.exe principale e ignorare la chiave + trappola per topi. (vinci 8.1 usando l'interfaccia di tipo classico di Windows)
mpag

19

basta usare questo script autohotkey:

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

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

puoi scaricare autohotkey da qui http://www.autohotkey.com/download/ . Salvare il file con estensione .ahk ed eseguirlo come qualsiasi applicazione.

Uso:

per rimuovere la barra del titolo LWindowButton + clic sinistro

per ripristinare la barra del titolo LWindowButton + tasto destro


Questo funziona per altri casi, come questa mia domanda: superuser.com/questions/664559/… Tuttavia, non ha alcun effetto, diciamo, su Google Chrome o sulle sue app con finestre. Qualche suggerimento qui? Penso che siano bar su misura ...
igorsantos07

7

ecco un programma che può rimuovere la barra del titolo per qualsiasi finestra. Per fare ciò è necessario selezionare la finestra dei giochi nella vista ad albero di WinExplorer che passare alla scheda 'Stile' e selezionare WS_DLGFRAME.


Questo è uno dei migliori programmi su Internet. Lo uso da anni. Vorrei davvero che fosse in grado di funzionare nella barra delle applicazioni e ripristinare tutte le impostazioni configurate per app specifiche. vale a dire, una sorta di supporto del profilo.
Devil's Advocate,

Devi eseguire questo programma e farlo ogni volta che esegui il gioco?
Nickolai Leschov,

3

Utilizzo di AutoHotKey e di una barra delle applicazioni per nascondere automaticamente.

LWin & f::

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

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

Perché l'uso WinMaxmize? Vedi i commenti della risposta di Asd .


Funziona bene. Preferisco la modalità di commutazione anziché sprecare due chiavi.
svuotando il


1

l'ho trovato nei forum HydrogenAudio:

Ecco uno screenshot di Foobar 2000 senza barra del titolo della finestra:

inserisci qui la descrizione dell'immagine

Il programma utilizzato si chiama Flash Desktop (shareware)

Sfortunatamente non elaborano veramente le impostazioni del programma per raggiungere l'obiettivo, ma piuttosto il problema di spostare le finestre senza una barra del titolo. Viene anche menzionato WindowBlinds.


0

Se riesci a scrivere il codice e stai eseguendo Vista o versioni successive, è piuttosto semplice creare un programma che registra un'applicazione in miniatura DWM nell'applicazione e quindi puoi selezionare di mostrare solo il contenuto della finestra senza bordi in questa anteprima. Devi anche inoltrare tutti gli input da questo programma di sovrapposizione al gioco in qualche modo, ma non è neanche super complicato.


0

Non eseguo più Windows, quindi non posso provarlo, ma Borderless Gaming è un'app open source dall'aspetto promettente che risolve questo problema. Mostra un elenco di applicazioni in esecuzione e consente di selezionarne una per manipolare le finestre.


Molto codice per AutoHotKey a 10 righe.
ceving il

0

Stavo avendo problemi con una finestra particolare, che con il metodo @ weakish e la struttura di Mikuz avrebbe preso la dimensione corretta della finestra per una finestra ingrandita, ma non sarebbe andata nella posizione giusta.

Ecco la mia soluzione 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

Se vuoi una finestra, senza UI di Windows attorno e uno sfondo nero, cioè il gioco e nient'altro che il gioco, perché non eseguire semplicemente la modalità a schermo intero? L'unica cosa che la modalità a finestra potrebbe portarti in quella circostanza è prestazioni Alt-Tab leggermente più veloci se hai un'altra app in esecuzione in background?

Se ha uno schermo di gioco più piccolo delle dimensioni dello schermo e senza distrazioni, allora (presumendo che tu stia usando uno schermo LCD) puoi normalmente correre nella modalità a schermo intero del gioco, ma usa una risoluzione leggermente inferiore rispetto alla risoluzione nativa del tuo LCD, molti schermi LCD mostreranno lo schermo risultante con un bordo nero attorno ad esso.


Sto cercando prestazioni Alt-Tab più veloci. In realtà più di quello; Ho un secondo monitor e voglio essere in grado di spostare il mouse su di esso.
Nelson,

Abbastanza giusto, gioco su una configurazione a doppio monitor ed eseguo la maggior parte dei giochi in modalità finestra per lo stesso motivo. Personalmente di solito imposto che la risoluzione del gioco sia la stessa di quella dello schermo e la trascino manualmente in modo che la barra del titolo sia fuori dalla parte superiore dello schermo.
GAThrawn,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.