Программа для Windows, чтобы удалить заголовок, рамку и т. Д. Из окна?


31

Мне нравится играть в компьютерные игры в оконном режиме, а не на весь экран. Мне не нравится пялиться на строку заголовка, рамку и прочее барахло пользовательского интерфейса. Мне также не нравится видеть другие вещи на моем рабочем столе за окном. Существует ли простая программа для Windows, которая удалит хром пользовательского интерфейса из произвольного окна из какого-либо другого приложения? Дополнительные очки за простой способ поставить черный экран под окном, скрывая рабочий стол.

Примечание. Я специально обращаюсь к окнам, размер которых меньше размера моего рабочего стола. Существует множество «оконных максимизированных» опций, которые делают окно точно такого же размера, как и рабочий стол, и располагаются таким образом, чтобы все украшения пользовательского интерфейса были за пределами экрана. (Например: ShiftWindow). Я пытаюсь убрать все украшения из окна, которое меньше размера рабочего стола.


Для вашего конкретного использования, однако, это зависит от того, какая игра. Игры не ведут себя как обычная программа, когда работают в окнах. Некоторые даже не обрабатывают это оформление окна и рисуют, например, прямо в верхнем левом углу экрана. На самом деле, может быть трудно найти «универсальное» решение, так как оно может зависеть от того, как игра отображается, и от того, как каждый обрабатывает оконный режим.
Gnoupi

Ответы:


16

Просто кое-что маленькое, что я сделал для своих целей после прочтения комментария voodoomsr. Заставляет его идти в левом углу и изменяет размеры до моего полного разрешения. Восстанавливает как было раньше. Не может использоваться с несколькими приложениями одновременно.

Спасибо 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
;

РЕДАКТИРОВАТЬ:

TBH Я пытался найти что-то полезное для окон, которое не изменяет размер, но ничего не может найти (не говоря о том, что это невозможно, это был фактически мой первый скрипт AutoHotkey).

Ну, во всяком случае, я сделал несколько твиков, таких как удаление ненужных снов, использование стиля, предложенного Нельсоном, и заставить его работать только с одной кнопкой, чтобы двойной щелчок не отменял сохраненные переменные.

#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
Спасибо, это очень близко к тому, что я хотел! Единственное, что не работает, - это если окно отказывается изменять размер: оно заканчивается в левом верхнем углу, а рабочий стол виден сзади. По центру с черным сзади было бы предпочтительнее. Но если размер окна можно изменить, это здорово. Один небольшой твик: стиль 0xC40000, кажется, работает лучше, он также удаляет маркеры изменения размера. Также вы оставили несколько снов: они нужны?
Нельсон

@ Нельсон Для Windows, чтобы отказаться от изменения размера, может быть, мы можем просто использовать WinMaxmize и WinRestroe (с панели задач Auot-Hide).
слабый

Ваш второй скрипт отлично работает на Windows 10. Большое спасибо, именно то, что я искал!
Лукас

@Lucas Рад помочь, все еще использую его сам!
Микуз

Если я случайно использую этот скрипт с моим рабочим столом в качестве активного окна, сначала рабочий стол получит полосу заголовка, а значки сместятся вниз. Если я запускаю его снова, мои значки исчезают. Таким образом, должно быть что-то, чтобы определить, является ли окно основным explorer.exe, и игнорировать нажатие клавиши + мышь. (Win 8.1 с использованием интерфейса Windows Classic-Type)
mpag

19

просто используйте этот скрипт autohotkey:

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

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

Вы можете скачать AutoHock отсюда http://www.autohotkey.com/download/ . Сохраните файл с расширением .ahk и запустите его как любое приложение.

Использование:

удалить строку заголовка LWindowButton + левый клик

восстановить строку заголовка LWindowButton + правый клик


Это работает для других случаев, например, для моего вопроса: superuser.com/questions/664559/… Однако это не влияет, скажем, на Google Chrome или его оконные приложения. Любой намек здесь? Я думаю, что это сделанные на заказ бары ...
igorsantos07

7

Вот программа, которая может удалить заголовок для любого окна. Для этого необходимо выбрать окно игр в древовидном представлении WinExplorer, затем переключиться на вкладку «Стиль» и отключить WS_DLGFRAME.


Это одна из лучших программ в интернете. Я использую это в течение многих лет. Мне бы очень хотелось, чтобы у него была возможность запуска в системном трее и восстановления всех настроек, которые вы установили для определенных приложений. то есть какая-то поддержка профиля.
Адвокат дьявола

Вам нужно запускать эту программу и делать это каждый раз, когда вы запускаете игру?
Николай Лещов

3

Использование AutoHotKey и автоматическое скрытие панели задач.

LWin & f::

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

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

Зачем использовать WinMaxmize? Смотрите комментарии ответа Асда .


Работает отлично. Я предпочитаю режим переключения вместо того, чтобы тратить две клавиши.
ceving


1

я нашел это на форумах HydrogenAudio:

Вот скриншот Foobar 2000 без строки заголовка окна:

введите описание изображения здесь

Используемая программа называется Flash Desktops (условно-бесплатная)

К сожалению, они на самом деле не конкретизируют настройки программы для достижения цели, а скорее проблему перемещения окон без заголовка. WindowBlinds также упоминается.


0

Если вы можете писать код и работаете с Vista или новее, довольно легко создать программу, которая регистрирует миниатюру DWM в приложении, а затем вы можете выбрать показ только содержимого окна без границ на этом миниатюре. Вы также должны каким-то образом перенаправить все входные данные из этой оверлейной программы в игру, но это тоже не сложно.


0

Я больше не использую Windows, поэтому не могу это проверить, но Borderless Gaming - это перспективное приложение с открытым исходным кодом, которое решает эту проблему. Он показывает список запущенных приложений и позволяет выбрать одно для управления окнами.


Много кода для 10 строк AutoHotKey.
ceving

0

У меня были проблемы с конкретным окном, которое при использовании метода @ weakish и фреймворка Mikuz брало бы правильный размер окна для развернутого окна, но не могло перейти в правильную позицию.

Вот мое ахк решение

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

Если вам нужно окно без внешнего интерфейса Windows и черный фон, то есть игра и ничего кроме игры, почему бы просто не запустить в полноэкранном режиме? О единственном оконном режиме будет то, что вы окажетесь в этом случае немного быстрее, чем Alt-Tab, если у вас есть другое приложение, работающее в фоновом режиме?

Если игровой экран меньше размера экрана и не отвлекает внимание на то, что вам нужно, то (предположим, что вы используете ЖК-экран) вы можете нормально работать в полноэкранном режиме игры, но использовать разрешение чуть ниже чем исходное разрешение вашего ЖК-дисплея, многие ЖК-экраны покажут получившийся экран с черной рамкой вокруг него.


Я ищу более быструю работу Alt-Tab. На самом деле больше, чем это; У меня есть второй монитор, и я хочу подвести к нему мышь.
Нельсон

Справедливо, я играю на установке с двумя мониторами и запускаю большинство игр в оконном режиме по той же причине. Лично я обычно устанавливаю, что разрешение игры совпадает с разрешением экрана, и вручную перетаскиваю его так, чтобы строка заголовка находилась за верхом экрана.
GAThrawn
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.