¿Programa de Windows para eliminar la barra de título, marco, etc. de una ventana?

30

Me gusta jugar juegos de computadora en modo ventana, a diferencia de la pantalla completa. No me gusta mirar la barra de título, el marco y otros elementos basura de la interfaz de usuario. Tampoco me gusta ver otras cosas en mi escritorio alrededor de la ventana. ¿Existe un programa simple de Windows que elimine el cromo de la interfaz de usuario de una ventana arbitraria de alguna otra aplicación? Puntos extra para una manera fácil de colocar una pantalla negra debajo de la ventana, ocultando el escritorio.

Nota: Estoy buscando específicamente manejar ventanas que sean más pequeñas que el tamaño de mi escritorio. Hay una variedad de opciones 'maximizadas en ventana' que hacen que una ventana tenga exactamente el tamaño del escritorio y se coloque de modo que todas las decoraciones de la IU estén fuera de la pantalla. (Por ejemplo: ShiftWindow). Estoy tratando de quitar todas las decoraciones de una ventana que es más pequeña que el tamaño del escritorio.

Nelson
fuente
Sin embargo, para su uso particular, depende de qué juego. Los juegos no se comportan como un programa normal, cuando se abren. Algunos ni siquiera manejan esta decoración de ventana, y dibujan directamente en la esquina superior izquierda de la pantalla, por ejemplo. El hecho es que puede ser difícil encontrar una solución "universal", ya que puede depender de cómo se representa el juego y cómo cada uno maneja el modo de ventana.
Gnoupi

Respuestas:

15

Simplemente algo pequeño que hice para mis propósitos después de leer el comentario de voodoomsr. Hace que vaya a la esquina superior izquierda y cambia el tamaño a mi resolución completa. Restaura como era antes. No se puede usar con varias aplicaciones al mismo tiempo.

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

EDITAR:

TBH Traté de encontrar algo útil para Windows que no cambie de tamaño pero no pude encontrar nada (sin decir que no es posible, este fue mi primer script Autohotkey).

Bueno, de todos modos realicé algunos ajustes, como eliminar durmientes innecesarios, usando el estilo que Nelson sugirió y haciendo que funcione con solo un botón para que hacer doble clic no anule las variables guardadas.

#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
fuente
1
¡Gracias, eso está muy cerca de lo que quería! Lo único que no funciona bien es si la ventana se niega a cambiar el tamaño: termina en la esquina superior izquierda con el escritorio visible detrás. Centrado con negro detrás sería preferible. Pero si la ventana es redimensionable, es genial. Una pequeña modificación: el estilo 0xC40000 parece funcionar mejor, también elimina los controladores de cambio de tamaño. También dejaste algunas plazas: ¿son necesarias?
Nelson
@Nelson Para las ventanas se niegan a cambiar el tamaño, tal vez podamos usar WinMaxmize y WinRestroe (con la barra de tareas auot-hide).
débil
Su segundo script funciona perfectamente en Windows 10. Muchas gracias, ¡exactamente lo que estaba buscando!
Lucas
@Lucas ¡Feliz de ayudar, todavía lo uso yo también!
Mikuz
Si accidentalmente uso este script con mi escritorio como la ventana activa, primero el escritorio obtiene una barra de subtítulos y los iconos se desplazan hacia abajo. Si lo vuelvo a ejecutar, mis íconos desaparecen. Por lo tanto, debe haber algo para detectar si la ventana es el principal explorer.exe e ignorar la tecla + el mouse. (ganar 8.1 utilizando ventanas de interfaz de tipo clásico)
MPAG
19

solo use este script de autohotkey:

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

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

puedes descargar autohotkey desde aquí http://www.autohotkey.com/download/ . Guarde el archivo con una extensión .ahk y ejecútelo como cualquier aplicación.

Uso:

para eliminar la barra de título LWindowButton + clic izquierdo

para restaurar la barra de título LWindowButton + clic derecho

mjsr
fuente
Esto funciona para otros casos, como esta pregunta mía: superuser.com/questions/664559/… Sin embargo, no tiene ningún efecto en, por ejemplo, Google Chrome o sus aplicaciones con ventana. ¿Alguna pista aquí? Creo que son barras hechas a medida ...
igorsantos07
7

Aquí hay un programa que puede eliminar la barra de título de cualquier ventana. Para hacerlo, debe seleccionar la ventana de juegos en la vista de árbol de WinExplorer que cambiar a la pestaña 'Estilo' y marcar WS_DLGFRAME.


fuente
Este es uno de los mejores programas en internet. Lo he estado usando por años. Realmente desearía que tuviera la capacidad de ejecutarse en la bandeja del sistema y restaurar todas las configuraciones que establezca para aplicaciones específicas. es decir, algún tipo de soporte de perfil.
Abogado del Diablo
¿Tienes que ejecutar este programa y hacerlo cada vez que ejecutas el juego?
Nickolai Leschov
3

Usando AutoHotKey y una barra de tareas de ocultación automática.

LWin & f::

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

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

¿Por qué usar WinMaxmize? Ver comentarios de la respuesta de Asd .

debilitar
fuente
Funciona bien. Prefiero el modo de alternar en lugar de desperdiciar dos teclas.
ceving
2

CutAway by Skrommel puede hacer lo que quieras.

Cortar

Ricardo
fuente
1

Encontré esto en los foros de HydrogenAudio:

Aquí hay una captura de pantalla de Foobar 2000 sin una barra de título de la ventana:

ingrese la descripción de la imagen aquí

El programa utilizado se llama Flash Desktops (shareware)

Desafortunadamente, en realidad no detallan la configuración del programa para lograr el objetivo, sino más bien el problema de mover ventanas sin una barra de título. WindowBlinds también se menciona.

Garfio
fuente
0

Si puede codificar y está ejecutando Vista o más reciente, es bastante fácil crear un programa que registre una miniatura DWM en la aplicación y luego puede seleccionar mostrar solo el contenido de la ventana sin bordes en esta miniatura. También debes reenviar todas las entradas de este programa de superposición al juego de alguna manera, pero eso tampoco es súper complicado.


fuente
0

Ya no ejecuto Windows, así que no puedo probar esto, pero Borderless Gaming es una aplicación de código abierto prometedora que resuelve este problema. Muestra una lista de aplicaciones en ejecución y le permite seleccionar una para manipular las ventanas.

Nelson
fuente
Mucho código para 10 líneas AutoHotKey.
ceving
0

Estaba teniendo problemas con una ventana en particular, que con el método de @ debilitamiento y el marco de Mikuz tomaría el tamaño de ventana correcto para una ventana maximizada, pero no iría a la posición correcta.

Aquí está mi solución 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
fuente
-1

Si desea una ventana, sin la interfaz de usuario de Windows alrededor, y un fondo negro, es decir, el juego y nada más que el juego, ¿por qué no simplemente ejecutar en modo de pantalla completa? Casi lo único que el modo de ventana sería ponerlo en esa circunstancia es un rendimiento Alt-Tab ligeramente más rápido si tiene otra aplicación ejecutándose en segundo plano.

Si tiene una pantalla de juego que es más pequeña que el tamaño de la pantalla y sin las distracciones que busca, entonces (suponiendo que esté usando una pantalla LCD) normalmente puede ejecutar en el modo de pantalla completa del juego, pero use una resolución ligeramente inferior que la resolución nativa de su LCD, muchas pantallas LCD mostrarán la pantalla resultante con un borde negro alrededor.

GAThrawn
fuente
Estoy buscando un rendimiento más rápido de Alt-Tab. En realidad más que eso; Tengo un segundo monitor y quiero poder mover mi mouse hacia él.
Nelson
Justo, juego con una configuración de monitor dual y ejecuto la mayoría de los juegos en modo ventana por la misma razón. Personalmente, normalmente configuro las res del juego para que sean las mismas que las de esa pantalla, y manualmente solo lo arrastro para que la barra de título quede fuera de la parte superior de la pantalla.
GAThrawn