Un programme Windows pour supprimer la barre de titre, le cadre, etc. d'une fenêtre?

31

J'aime jouer à des jeux informatiques en mode fenêtré, par opposition au plein écran. Je n'aime pas regarder la barre de titre, le cadre et les autres fichiers indésirables de l'interface utilisateur. Je n'aime pas non plus voir d'autres choses sur mon bureau autour de la fenêtre. Existe-t-il un programme Windows simple qui supprimera le chrome de l'interface utilisateur d'une fenêtre arbitraire d'une autre application? Points supplémentaires pour un moyen facile de mettre un écran noir sous la fenêtre, cachant le bureau.

Remarque: je cherche spécifiquement à gérer les fenêtres plus petites que la taille de mon bureau. Il existe une variété d'options `` maximisées par fenêtre '' qui font qu'une fenêtre a exactement la taille du bureau et est positionnée de sorte que toutes les décorations de l'interface utilisateur soient hors écran. (Par exemple: ShiftWindow). J'essaie de retirer toutes les décorations d'une fenêtre plus petite que la taille du bureau.

Nelson
la source
Pour votre usage particulier, cependant, cela dépend de quel jeu. Les jeux ne se comportent pas comme un programme normal, lorsqu'ils sont fenêtrés. Certains ne gèrent même pas cette décoration de fenêtre et dessinent directement dans le coin supérieur gauche de l'écran, par exemple. Le fait est qu'il peut être difficile de trouver une solution "universelle", car elle peut dépendre de la façon dont le jeu est rendu et de la façon dont chacun gère le mode fenêtre.
Gnoupi

Réponses:

16

Juste quelque chose de petit que j'ai fait pour mes besoins après avoir lu le commentaire de voodoomsr. Permet d'aller dans le coin supérieur gauche et redimensionne à ma pleine résolution. Restaure comme avant. Ne peut pas être utilisé avec plusieurs applications en même temps.

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

MODIFIER:

TBH J'ai essayé de trouver quelque chose d'utile pour les fenêtres qui ne se redimensionne pas mais ne trouve rien (sans dire que ce n'est pas possible, c'était en fait mon premier script Autohotkey).

Eh bien, de toute façon, j'ai apporté quelques modifications, comme la suppression des périodes de sommeil inutiles, en utilisant le style suggéré par Nelson et en le faisant fonctionner avec un seul bouton afin que le double-clic ne remplace pas les variables enregistrées.

#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
la source
1
Merci, c'est très proche de ce que je voulais! La seule chose qui ne fonctionne pas bien, c'est si la fenêtre refuse de se redimensionner: elle se retrouve en haut à gauche avec le bureau visible derrière. Centré avec du noir derrière serait préférable. Mais si la fenêtre est redimensionnable, c'est super. Un petit bémol: le style 0xC40000 semble mieux fonctionner, il supprime également les poignées de redimensionnement. Vous avez aussi laissé quelques nuits: sont-elles nécessaires?
Nelson
@Nelson Pour les fenêtres refusant de redimensionner, nous pouvons peut-être simplement utiliser WinMaxmize et WinRestroe (avec la barre des tâches auot-hide).
faible
Votre deuxième script fonctionne parfaitement sur Windows 10. Merci beaucoup, exactement ce que je cherchais!
Lucas
@Lucas Heureux d'aider, toujours en l'utilisant moi aussi!
Mikuz
Si j'utilise accidentellement ce script avec mon bureau comme fenêtre active, le bureau reçoit d'abord une barre de légende et les icônes se déplacent vers le bas. Si je l'exécute à nouveau, mes icônes disparaissent complètement. Donc, il doit y avoir quelque chose pour détecter si la fenêtre est l'explorateur principal et ignorer la touche + la frappe de la souris. (gagner 8.1 en utilisant l'interface de type classique de Windows)
mpag
19

utilisez simplement ce script autohotkey:

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

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

vous pouvez télécharger autohotkey ici http://www.autohotkey.com/download/ . Enregistrez le fichier avec une extension .ahk et exécutez-le comme n'importe quelle application.

Usage:

pour supprimer la barre de titre LWindowButton + clic gauche

pour restaurer la barre de titre LWindowButton + clic droit

mjsr
la source
Cela fonctionne pour d'autres cas, comme ma question: superuser.com/questions/664559/… Cependant, cela n'a aucun effet sur, disons, Google Chrome ou ses applications fenêtrées. Un indice ici? Je pense que ce sont des barres sur mesure ...
igorsantos07
7

voici un programme qui peut supprimer la barre de titre de n'importe quelle fenêtre. Pour ce faire, vous devez sélectionner la fenêtre des jeux dans l'arborescence de WinExplorer, puis passer à l'onglet «Style» et cocher WS_DLGFRAME.


la source
C'est l'un des meilleurs programmes sur Internet. Je l'utilise depuis des années. Je souhaite vraiment qu'il ait la possibilité de s'exécuter dans la barre d'état système et de restaurer tous les paramètres que vous définissez pour des applications spécifiques. c'est-à-dire, une sorte de support de profil.
Devil's Advocate
Devez-vous exécuter ce programme et le faire à chaque fois que vous lancez le jeu?
Nickolai Leschov
3

Utilisation d'AutoHotKey et d'une barre des tâches à masquage automatique.

LWin & f::

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

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

Pourquoi utiliser WinMaxmize? Voir les commentaires de la réponse d' Asd .

faible
la source
Fonctionne bien. Je préfère le mode bascule au lieu de perdre deux touches.
ceving
1

je l'ai trouvé sur les forums HydrogenAudio:

Voici une capture d'écran de Foobar 2000 sans barre de titre de fenêtre:

entrez la description de l'image ici

Le programme utilisé s'appelle Flash Desktops (shareware)

Malheureusement, ils ne développent pas vraiment les paramètres du programme pour atteindre l'objectif, mais plutôt le problème du déplacement des fenêtres sans barre de titre. WindowBlinds est également mentionné.

Gaffe
la source
0

Si vous pouvez coder et que vous exécutez Vista ou une version plus récente, il est assez facile de créer un programme qui enregistre une miniature DWM dans l'application, puis vous pouvez choisir d'afficher uniquement le contenu de la fenêtre sans bordures dans cette miniature. Vous devez également transmettre toutes les entrées de ce programme de superposition au jeu d'une manière ou d'une autre, mais ce n'est pas super compliqué non plus.


la source
0

Je ne lance plus Windows, je ne peux donc pas tester cela, mais Borderless Gaming est une application open source prometteuse qui résout ce problème. Il affiche une liste des applications en cours d'exécution et vous permet d'en sélectionner une pour manipuler les fenêtres.

Nelson
la source
Beaucoup de code pour 10 lignes AutoHotKey.
ceving
0

J'avais des problèmes avec une fenêtre particulière, qui avec la méthode de @ faiblesse et le cadre de Mikuz prendrait la taille de fenêtre correcte pour une fenêtre maximisée, mais n'irait pas à la bonne position.

Voici ma solution 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
mpag
la source
-1

Si vous voulez une fenêtre, sans interface utilisateur Windows autour d'elle, et un fond noir, c'est-à-dire le jeu et rien que le jeu, pourquoi ne pas simplement exécuter en mode plein écran? À propos de la seule chose que le mode fenêtré vous amènerait dans ce cas, les performances Alt-Tab sont légèrement plus rapides si vous avez une autre application en cours d'exécution en arrière-plan?

S'il a un écran de jeu plus petit que la taille de l'écran et sans aucune distraction que vous recherchez, alors (en supposant que vous utilisez un écran LCD), vous pouvez normalement exécuter en mode plein écran du jeu, mais utiliser une résolution légèrement inférieure que la résolution native de votre LCD, de nombreux écrans LCD affichent alors l'écran résultant avec une bordure noire autour.

GAThrawn
la source
Je recherche des performances Alt-Tab plus rapides. En fait plus que cela; J'ai un deuxième moniteur et je veux pouvoir y déplacer ma souris.
Nelson
Assez juste, je joue sur une configuration à deux écrans et exécute la plupart des jeux en mode fenêtré pour la même raison. Personnellement, je règle normalement la résolution du jeu pour qu'elle soit identique à celle de cet écran, et je la fais glisser manuellement de façon à ce que la barre de titre soit en haut de l'écran.
GAThrawn