Program Windows do usuwania paska tytułu, ramki itp. Z okna?

30

Lubię grać w gry komputerowe w trybie okienkowym, a nie na pełnym ekranie. Nie lubię patrzeć na pasek tytułu, ramkę i inne śmieci interfejsu użytkownika. Nie lubię też widzieć innych rzeczy na pulpicie za oknem. Czy istnieje prosty program systemu Windows, który usunie chrom interfejsu użytkownika z dowolnego okna z innej aplikacji? Dodatkowe punkty za łatwy sposób na umieszczenie czarnego ekranu pod oknem, ukrywającego pulpit.

Uwaga: Szukam konkretnie obsługi okien, które są mniejsze niż rozmiar mojego pulpitu. Istnieje wiele opcji „zmaksymalizowanych okien”, które sprawiają, że okno ma dokładnie taki sam rozmiar pulpitu i jest ustawione tak, aby wszystkie dekoracje interfejsu użytkownika były poza ekranem. (Np .: ShiftWindow). Próbuję zdjąć wszystkie dekoracje z okna mniejszego niż rozmiar pulpitu.

Nelson
źródło
Jednak w zależności od używanej gry zależy to od konkretnego zastosowania. Gry nie zachowują się jak zwykły program, gdy są wyświetlane w oknie. Niektóre nawet nie obsługują tej dekoracji okna i na przykład rysują bezpośrednio w lewym górnym rogu ekranu. Faktem jest, że znalezienie „uniwersalnego” rozwiązania może być trudne, ponieważ może zależeć od tego, jak gra jest renderowana i od tego, jak każdy z nich obsługuje tryb okna.
Gnoupi,

Odpowiedzi:

15

Po prostu coś małego, co zrobiłem dla swoich celów po przeczytaniu komentarza voodoomsr. Powoduje przejście do lewego górnego rogu i zmienia rozmiar do pełnej rozdzielczości. Przywraca jak poprzednio. Nie można go używać z wieloma aplikacjami jednocześnie.

Dzięki 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
;

EDYTOWAĆ:

TBH Próbowałem znaleźć coś przydatnego dla systemu Windows, który nie zmienia rozmiaru, ale nie mógł nic znaleźć (nie mówiąc, że to niemożliwe, to był właściwie mój pierwszy skrypt Autohotkey).

Cóż, w każdym razie wprowadziłem kilka poprawek, takich jak usuwanie niepotrzebnych snów, używając stylu sugerowanego przez Nelsona i sprawiając, że działa tylko z jednym przyciskiem, więc podwójne kliknięcie nie zastąpi zapisanych zmiennych.

#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
źródło
1
Dzięki, to bardzo blisko tego, czego chciałem! Jedyne, co nie działa dobrze, to to, że okno odmawia zmiany rozmiaru: kończy się w lewym górnym rogu z widocznym pulpitem. Lepiej byłoby wyśrodkować na czarno. Ale jeśli rozmiar okna można zmienić, to świetnie. Drobna drobna poprawka: styl 0xC40000 wydaje się działać lepiej, usuwa również uchwyty zmiany rozmiaru. Zostawiłeś też trochę snu: czy są konieczne?
Nelson
@Nelson W przypadku systemu Windows odmowa zmiany rozmiaru może być możliwe użycie WinMaxmize i WinRestroe (z paskiem zadań auot-hide).
słabe
Twój drugi skrypt działa doskonale w systemie Windows 10. Bardzo dziękuję, dokładnie to, czego szukałem!
Lucas,
@Lucas Z przyjemnością pomogę, nadal sam go używam!
Mikuz
Jeśli przypadkowo użyję tego skryptu z moim pulpitem jako aktywnym oknem, najpierw pulpit otrzymuje pasek napisów, a ikony przesuwają się w dół. Jeśli uruchomię go ponownie, moje ikony znikną całkowicie. Musi więc być coś do wykrycia, jeśli okno jest głównym explorer.exe i zignoruj ​​kombinację klawiszy + pociągnięcie myszy. (wygraj 8.1 przy użyciu interfejsu klasycznego systemu Windows)
mpag
19

wystarczy użyć tego skryptu autohotkey:

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

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

możesz pobrać autohotkey stąd http://www.autohotkey.com/download/ . Zapisz plik z rozszerzeniem .ahk i uruchom go jak każdą aplikację.

Stosowanie:

usunąć pasek tytułowy LWindowButton + lewy przycisk myszy

aby przywrócić pasek tytułowy LWindowButton + kliknij prawym przyciskiem myszy

mjsr
źródło
Działa to w innych przypadkach, takich jak moje pytanie: superuser.com/questions/664559/... Jednak nie ma to wpływu, powiedzmy, na Google Chrome lub na aplikacje okienkowe. Jakaś wskazówka tutaj? Myślę, że są to szyny na zamówienie ...
igorsantos07
7

oto program, który może usunąć pasek tytułowy dla dowolnego okna. Aby to zrobić, musisz wybrać okno gry w widoku drzewa WinExplorer, a następnie przejść do zakładki „Styl” i wyłączyć WS_DLGFRAME.


źródło
Jest to jeden z najlepszych programów w Internecie. Używam go od lat. Naprawdę chciałbym mieć możliwość uruchamiania w zasobniku systemowym i przywracania wszystkich ustawień określonych dla określonych aplikacji. tj. jakieś wsparcie profilu.
Adwokat diabła,
Czy musisz uruchamiać ten program i robić to przy każdym uruchomieniu gry?
Nickolai Leschov
3

Korzystanie z AutoHotKey i automatycznego ukrywania paska zadań.

LWin & f::

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

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

Dlaczego warto korzystać WinMaxmize? Zobacz komentarze do odpowiedzi Asda .

słaby
źródło
Działa w porządku. Wolę tryb przełączania zamiast marnowania dwóch kluczy.
ceving
1

znalazłem to na forach HydrogenAudio:

Oto zrzut ekranu Foobar 2000 bez paska tytułu okna:

wprowadź opis zdjęcia tutaj

Używany program nazywa się Flash Desktops (shareware)

Niestety tak naprawdę nie rozwijają ustawień programu, aby osiągnąć cel, ale raczej problem z przenoszeniem okien bez paska tytułu. WindowBlinds jest również wspomniane.

Gafel
źródło
0

Jeśli potrafisz kodować i korzystasz z systemu Vista lub nowszego, bardzo łatwo jest stworzyć program, który rejestruje miniaturę DWM w aplikacji, a następnie możesz wybrać wyświetlanie tylko zawartości okna bez ramek w tej miniaturze. Musisz także w jakiś sposób przesłać wszystkie dane z tego nakładającego się programu do gry, ale to też nie jest bardzo skomplikowane.


źródło
0

Nie używam już systemu Windows, więc nie mogę tego przetestować, ale Borderless Gaming to obiecująca aplikacja typu open source, która rozwiązuje ten problem. Pokazuje listę uruchomionych aplikacji i pozwala wybrać jedną z nich, aby manipulować oknami.

Nelson
źródło
Dużo kodu dla 10 linii AutoHotKey.
ceving
0

Miałem problemy z konkretnym oknem, które przy metodzie @ slaisha i frameworku Mikuz wybrałoby prawidłowy rozmiar okna dla zmaksymalizowanego okna, ale nie zmieściłoby się we właściwej pozycji.

Oto moje rozwiązanie 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
źródło
-1

Jeśli chcesz mieć okno bez interfejsu użytkownika Windows i czarne tło, tj. Grę i tylko grę, dlaczego nie uruchomić w trybie pełnoekranowym? Czy jedyną rzeczą, w której tryb okienkowy sprawiłby, że w takich okolicznościach jest nieco wyższa wydajność Alt-Tab, jeśli masz inną aplikację działającą w tle?

Jeśli ma ekran do gry, który jest mniejszy niż rozmiar ekranu i nie rozprasza Cię uwagę, wtedy (zakładając, że używasz ekranu LCD) możesz normalnie uruchomić w trybie pełnoekranowym gry, ale użyj nieco niższej rozdzielczości niż natywna rozdzielczość twojego wyświetlacza LCD, wiele ekranów LCD wyświetli wynikowy ekran z czarną ramką wokół niego.

GAThrawn
źródło
Szukam szybszej wydajności Alt-Tab. Właściwie więcej niż to; Mam drugi monitor i chcę na nim przesunąć mysz.
Nelson
Szczerze mówiąc, gram na konfiguracji z dwoma monitorami i uruchamiam większość gier w trybie okienkowym z tego samego powodu. Osobiście zwykle ustawiam res gry tak, jak res tego ekranu, i ręcznie po prostu przeciągam go, aby pasek tytułowy znalazł się u góry ekranu.
GAThrawn