Programa do Windows para remover a barra de título, quadro, etc de uma janela?

30

Eu gosto de jogar jogos de computador no modo janela, em vez de tela cheia. Não gosto de olhar para a barra de título, o quadro e outros itens indesejados da interface do usuário. Também não gosto de ver outras coisas na minha área de trabalho ao redor da janela. Existe um programa simples do Windows que retira o cromo da interface do usuário de uma janela arbitrária de algum outro aplicativo? Pontos extras para uma maneira fácil de colocar uma tela preta embaixo da janela, ocultando a área de trabalho.

Nota: Estou procurando especificamente lidar com janelas menores que o tamanho da minha área de trabalho. Há uma variedade de opções 'maximizadas em janelas' que tornam a janela exatamente do tamanho da área de trabalho e posicionada para que todas as decorações da interface do usuário fiquem fora da tela. (Por exemplo: ShiftWindow). Estou tentando retirar todas as decorações de uma janela menor que o tamanho da área de trabalho.

Nelson
fonte
Para seu uso específico, porém, depende de qual jogo. Os jogos não se comportam como um programa normal, quando estão na janela. Alguns nem sequer lidam com essa decoração de janela e desenham diretamente no canto superior esquerdo da tela, por exemplo. O fato é que pode ser difícil encontrar uma solução "universal", pois pode depender de como o jogo é renderizado e de como cada um lida com o modo de janela.
Gnoupi

Respostas:

15

Apenas algo pequeno que eu fiz para meus propósitos depois de ler o comentário do voodoomsr. Faz com que ele fique no canto esquerdo e redimensione para a minha resolução total. Restaura como era antes. Não pode ser usado com vários aplicativos ao mesmo tempo.

Obrigado 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 Tentei encontrar algo útil para o Windows que não redimensiona, mas que não conseguiu encontrar nada (sem dizer que não é possível, esse foi realmente o meu primeiro script de Autohotkey).

Bem, de qualquer maneira, fiz alguns ajustes, como remover sonecas desnecessárias, usando o estilo sugerido por Nelson e fazendo com que funcionasse com apenas um botão, para que o clique duplo não substituísse as variáveis ​​salvas.

#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
fonte
1
Obrigado, isso é muito próximo do que eu queria! A única coisa que não funciona bem é se a janela se recusar a redimensionar: ela acaba no canto superior esquerdo com a área de trabalho visível atrás. Centralizado com preto atrás seria preferível. Mas se a janela é redimensionável, é ótimo. Um pequeno ajuste: o estilo 0xC40000 parece funcionar melhor, mas também remove as alças de redimensionamento. Também você deixou alguns sonos: eles são necessários?
194 Nelson Nelson
@ Nelson Para o Windows se recusar a redimensionar, talvez possamos usar o WinMaxmize e o WinRestroe (com a barra de tarefas auot-hide).
fraca
Seu segundo script funciona perfeitamente no Windows 10. Muito obrigado, exatamente o que eu estava procurando!
Lucas
@ Lucas Feliz em ajudar, ainda estou usando ele também!
Mikuz
Se eu acidentalmente usar esse script com a área de trabalho como a janela ativa, primeiro a área de trabalho obterá uma barra de legenda e os ícones serão desativados. Se eu executá-lo novamente, meus ícones desaparecem. Portanto, é necessário que haja algo para detectar se a janela é o principal explorer.exe e ignorar a chave + ratoeira. (ganhar 8.1 utilizando janelas de interface de tipo clássico)
MPAG
19

basta usar este script de autohotkey:

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

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

você pode fazer o download da autohotkey aqui http://www.autohotkey.com/download/ . Salve o arquivo com a extensão .ahk e execute-o como qualquer aplicativo.

Uso:

para remover a barra de título LWindowButton + Clique esquerdo

restaurar a barra de título LWindowButton + Clique com o botão direito

mjsr
fonte
Isso funciona para outros casos, como esta minha: superuser.com/questions/664559/… No entanto, não afeta, digamos, o Google Chrome ou seus aplicativos em janelas. Alguma dica aqui? Eu acho que essas barras são feitos ...
igorsantos07
7

Aqui está um programa que pode remover a barra de título de qualquer janela. Para fazer isso, você deve selecionar a janela de jogos na visualização em árvore do WinExplorer e depois alternar para a guia 'Estilo' e desmarcar WS_DLGFRAME.


fonte
Este é um dos melhores programas da internet. Eu tenho usado por anos. Eu realmente gostaria que ele tivesse a capacidade de executar na bandeja do sistema e restaurar todas as configurações definidas para aplicativos específicos. ou seja, algum tipo de suporte ao perfil.
Advogado do diabo
Você precisa executar este programa e fazer isso toda vez que executar o jogo?
Nickolai Leschov
3

Usando o AutoHotKey e uma barra de tarefas de ocultação 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 que usar WinMaxmize? Veja comentários da resposta de Asd .

fraco
fonte
Funciona bem. Eu prefiro o modo de alternância do que desperdiçar duas teclas.
ceving
2

O CutAway da Skrommel pode fazer o que você deseja.

Cut Away

Richard
fonte
1

Encontrei isso nos fóruns HydrogenAudio:

Aqui está uma captura de tela do Foobar 2000 sem uma barra de título de janela:

insira a descrição da imagem aqui

O programa usado é chamado Flash Desktops (shareware)

Infelizmente, eles realmente não elaboram as configurações do programa para atingir a meta, mas o problema de mover as janelas sem uma barra de título. WindowBlinds também é mencionado.

Gaff
fonte
0

Se você pode codificar e está executando o Vista ou mais recente, é muito fácil criar um programa que registre uma miniatura de DWM no aplicativo e você pode optar por mostrar apenas o conteúdo da janela sem bordas nesta miniatura. Você também precisa encaminhar todas as informações desse programa de sobreposição para o jogo de alguma forma, mas isso também não é super complicado.


fonte
0

Eu não executo mais o Windows, por isso não posso testar isso, mas o Borderless Gaming é um aplicativo de código aberto de aparência promissora que resolve esse problema. Ele mostra uma lista de aplicativos em execução e permite selecionar um para manipular as janelas.

Nelson
fonte
Muito código para 10 linhas AutoHotKey.
ceving
0

Eu estava tendo problemas com uma janela específica, que com o método @ weakish e a estrutura de Mikuz levaria o tamanho correto da janela para uma janela maximizada, mas não iria para a posição correta.

Aqui está a minha solução 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
fonte
-1

Se você deseja uma janela, sem a interface do Windows, e um fundo preto, ou seja, o jogo e nada além do jogo, por que não executar apenas no modo de tela cheia? A única coisa que o modo de janela levaria você a essa circunstância é um desempenho Alt-Tab um pouco mais rápido se você tiver outro aplicativo em execução em segundo plano?

Se estiver com uma tela de jogo menor que o tamanho da tela e sem distrações, então (presumindo que você esteja usando uma tela de LCD), você poderá executar normalmente no modo de tela cheia do jogo, mas use uma resolução um pouco menor além da resolução nativa do seu LCD, muitas telas de LCD exibirão a tela resultante com uma borda preta ao redor.

GAThrawn
fonte
Estou procurando um desempenho mais rápido do Alt-Tab. Na verdade mais do que isso; Eu tenho um segundo monitor e quero poder passar o mouse para ele.
Nelson Nelson
É justo, eu jogo em uma configuração de monitor duplo e executo a maioria dos jogos no modo janela pela mesma razão. Pessoalmente, normalmente defino os res do jogo como iguais aos res da tela e arraste-os manualmente para que a barra de título fique na parte superior da tela.
GAThrawn