โปรแกรม Windows เพื่อลบหัวเรื่อง, กรอบ, ฯลฯ ออกจากหน้าต่าง?


30

ฉันชอบเล่นเกมคอมพิวเตอร์ในโหมดหน้าต่างแทนที่จะเป็นแบบเต็มหน้าจอ ฉันไม่ชอบจ้องที่แถบหัวเรื่องเฟรมและขยะ UI อื่น ๆ ฉันไม่ชอบเห็นสิ่งอื่น ๆ บนเดสก์ท็อปของฉันรอบหน้าต่าง มีโปรแกรม Windows ง่าย ๆ ที่จะตัด UI chrome ออกจากหน้าต่างโดยพลการจากแอปพลิเคชั่นอื่นหรือไม่? คะแนนพิเศษสำหรับวิธีที่ง่ายที่สุดในการวางหน้าจอสีดำใต้หน้าต่างซ่อนเดสก์ท็อป

หมายเหตุ: ฉันกำลังมองหาการจัดการหน้าต่างที่เล็กกว่าขนาดเดสก์ท็อปของฉันโดยเฉพาะ มีตัวเลือก 'ขยายขนาดหน้าต่างสูงสุด' ที่ทำให้หน้าต่างมีขนาดเท่ากับเดสก์ท็อปและวางตำแหน่งเพื่อให้การตกแต่ง UI ทั้งหมดปิดหน้าจอ (เช่น: ShiftWindow) ฉันพยายามที่จะตัดการตกแต่งทั้งหมดออกไปจากหน้าต่างที่เล็กกว่าขนาดเดสก์ท็อป


สำหรับการใช้งานของคุณโดยเฉพาะมันขึ้นอยู่กับเกม เกมไม่ทำงานเหมือนโปรแกรมปกติเมื่อมีหน้าต่าง บางคนไม่ได้จัดการตกแต่งหน้าต่างนี้และวาดโดยตรงที่มุมซ้ายบนของหน้าจอเช่น ความจริงก็คือมันอาจเป็นเรื่องยากที่จะหาวิธีแก้ปัญหา "สากล" เนื่องจากมันขึ้นอยู่กับวิธีการแสดงผลของเกมและวิธีที่แต่ละโหมดจัดการกับโหมดหน้าต่าง
Gnoupi

คำตอบ:


15

บางสิ่งเล็ก ๆ ที่ฉันทำเพื่อจุดประสงค์ของฉันหลังจากอ่านความคิดเห็นของ 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 ฉันพยายามหาสิ่งที่มีประโยชน์สำหรับ windows ที่ไม่ได้ปรับขนาด แต่ไม่สามารถหาอะไรได้ (ไม่ได้บอกว่ามันเป็นไปไม่ได้จริง ๆ แล้วนี่เป็นสคริปต์ Autohotkey ตัวแรกของฉัน)

ฉันทำ tweaks ด้วยการเอา sleeps ออกโดยไม่จำเป็นใช้สไตล์ที่ Nelson แนะนำและทำให้ใช้งานได้ด้วยปุ่มเดียวดังนั้นการคลิกสองครั้งจะไม่แทนที่ตัวแปรที่บันทึกไว้

#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 ดูเหมือนว่าจะทำงานได้ดีขึ้นก็จะลบการจัดการปรับขนาดเช่นกัน คุณต้องนอนหลับบ้างไหม: พวกมันจำเป็นไหม?
เนลสัน

@Nelson สำหรับ windows ปฏิเสธที่จะปรับขนาดบางทีเราก็สามารถใช้ WinMaxmize และ WinRestroe (พร้อม auot-hide task-bar)
อ่อนตัว

สคริปต์ที่สองของคุณทำงานได้อย่างสมบูรณ์บน Windows 10 ขอบคุณมากสิ่งที่ฉันกำลังมองหา!
Lucas

@ Lucas มีความสุขที่จะช่วยยังคงใช้มันด้วยตัวเองเช่นกัน!
Mikuz

หากฉันใช้สคริปต์นี้กับเดสก์ท็อปของฉันโดยไม่ตั้งใจเป็นหน้าต่างที่ใช้งานอยู่อันดับแรกเดสก์ท็อปจะได้รับแถบคำอธิบายภาพและไอคอนจะเลื่อนลง หากฉันเรียกใช้อีกครั้งไอคอนของฉันจะแบนหายไป ดังนั้นจะต้องมีบางสิ่งบางอย่างในการตรวจสอบว่าหน้าต่างเป็น explorer.exe หลักและไม่สนใจคีย์ + mousestroke (ชนะ 8.1 โดยใช้อินเทอร์เฟซแบบคลาสสิคของ windows)
สิงหาคม

19

เพียงใช้สคริปต์ autohotkey นี้:

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

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

คุณสามารถดาวน์โหลดได้จากที่นี่ AutoHotKey http://www.autohotkey.com/download/ บันทึกไฟล์ด้วยนามสกุล. ahk และเรียกใช้เช่นแอปพลิเคชันใด ๆ

การใช้งาน:

เพื่อลบแถบหัวเรื่อง LWindowButton + คลิกซ้าย

เพื่อคืนค่าแถบชื่อ LWindowButton + คลิกขวา


สิ่งนี้ใช้ได้กับกรณีอื่น ๆ เช่นคำถามของฉัน: superuser.com/questions/664559/…อย่างไรก็ตามมันไม่มีผลกับพูด Google Chrome หรือแอพที่มีหน้าต่าง คำใบ้ใด ๆ ที่นี่? ผมคิดว่าบาร์ที่ทำเองที่ ...
igorsantos07

7

นี่คือโปรแกรมที่สามารถลบหัวเรื่องสำหรับหน้าต่างใดก็ได้ หากต้องการทำเช่นนั้นคุณต้องเลือกหน้าต่างเกมในมุมมองต้นไม้ WinExplorer แทนที่จะเปลี่ยนเป็นแท็บ 'สไตล์' และทำเครื่องหมายที่ WS_DLGFRAME


นี่เป็นหนึ่งในโปรแกรมที่ดีที่สุดบนอินเทอร์เน็ต ฉันใช้มันมาหลายปีแล้ว ฉันหวังว่ามันจะมีความสามารถในการเรียกใช้ในถาดระบบและเรียกคืนการตั้งค่าทั้งหมดที่คุณตั้งไว้สำหรับแอพเฉพาะ เช่นการสนับสนุนโปรไฟล์บางประเภท
ผู้สนับสนุนของปีศาจ

คุณต้องใช้โปรแกรมนี้และทำสิ่งนี้ทุกครั้งที่คุณเปิดเกมหรือไม่?
Nickolai Leschov

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? ดูความคิดเห็นของคำตอบของ Asd


ทำงานได้ดี ฉันชอบโหมดสลับแทนการเสียสองปุ่ม
ceving


1

ฉันพบสิ่งนี้ที่ฟอรัม HydrogenAudio:

นี่คือภาพหน้าจอของ Foobar 2000 ที่ไม่มีแถบหัวเรื่องหน้าต่าง:

ป้อนคำอธิบายรูปภาพที่นี่

โปรแกรมที่ใช้เรียกว่าFlash Desktops (แชร์แวร์)

โชคไม่ดีที่พวกเขาไม่ได้อธิบายรายละเอียดของการตั้งค่าโปรแกรมเพื่อให้บรรลุเป้าหมาย แต่เป็นเรื่องของการย้ายหน้าต่างโดยไม่มีแถบหัวเรื่อง WindowBlinds ยังกล่าวถึง


0

หากคุณสามารถโค้ดและใช้งาน Vista หรือใหม่กว่านั้นเป็นเรื่องง่ายที่จะสร้างโปรแกรมที่ลงทะเบียนภาพขนาดย่อของ DWM ไปยังแอปพลิเคชันจากนั้นคุณสามารถเลือกที่จะแสดงเฉพาะเนื้อหาหน้าต่างที่ไม่มีขอบในภาพขนาดย่อนี้ คุณต้องส่งต่อข้อมูลทั้งหมดจากโปรแกรมโอเวอร์เลย์นี้ไปยังเกมด้วยวิธีใดวิธีหนึ่ง แต่นั่นก็ไม่ได้ซับซ้อนเหมือนกัน


0

ฉันไม่ได้รัน Windows อีกต่อไปดังนั้นจึงไม่สามารถทดสอบสิ่งนี้ได้ แต่Borderless Gamingเป็นแอพโอเพนซอร์ซที่มีแนวโน้มที่จะช่วยแก้ปัญหานี้ได้ มันแสดงรายการแอพพลิเคชั่นที่กำลังรันและให้คุณเลือกแอปพลิเคชั่นเพื่อจัดการหน้าต่าง


รหัสมากสำหรับ 10 บรรทัด AutoHotKey
ceving

0

ฉันกำลังมีปัญหากับหน้าต่างเฉพาะซึ่งด้วยวิธีการของ @ weakish และกรอบของ Mikuz จะใช้ขนาดหน้าต่างที่ถูกต้องสำหรับหน้าต่างที่ขยายใหญ่สุด แต่จะไม่ไปในตำแหน่งที่เหมาะสม

นี่คือโซลูชัน 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

-1

หากคุณต้องการหน้าต่างที่ไม่มี Windows UI อยู่รอบ ๆ และมีพื้นหลังสีดำนั่นคือเกมและไม่มีอะไรนอกจากเกมเกมทำไมไม่เพียงแค่ทำงานในโหมดเต็มหน้าจอ เกี่ยวกับโหมดหน้าต่างเดียวที่จะทำให้คุณได้รับในกรณีนั้นประสิทธิภาพการทำงานของ Alt-Tab จะเร็วขึ้นเล็กน้อยหากคุณมีแอปอื่นทำงานอยู่เบื้องหลัง

หากมีหน้าจอการเล่นที่เล็กกว่าขนาดหน้าจอและไม่มีสิ่งรบกวนใด ๆ เกิดขึ้นหลังจากนั้น (สมมติว่าคุณกำลังใช้หน้าจอ LCD) โดยปกติคุณสามารถทำงานในโหมดเต็มหน้าจอของเกมได้ แต่ใช้ความละเอียดที่ต่ำกว่าเล็กน้อย กว่าความละเอียดดั้งเดิมของ LCD ของคุณหน้าจอ LCD จำนวนมากจะแสดงหน้าจอที่ได้โดยมีขอบสีดำล้อมรอบ


ฉันกำลังมองหาประสิทธิภาพของ Alt-Tab ที่เร็วขึ้น ที่จริงยิ่งไปกว่านั้น ฉันมีจอที่สองและต้องการที่จะเลื่อนเมาส์ไปที่มัน
เนลสัน

ค่อนข้างยุติธรรมฉันเล่นเกมในการตั้งค่าจอภาพสองจอและเรียกใช้เกมส่วนใหญ่ในโหมดหน้าต่างด้วยเหตุผลเดียวกัน โดยส่วนตัวแล้วฉันตั้งค่าความละเอียดของเกมให้เหมือนกับความละเอียดของหน้าจอและด้วยตนเองเพียงลากเพื่อให้แถบหัวเรื่องอยู่ด้านบนของหน้าจอ
GAThrawn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.