ฉันมีจอภาพสองจอและฉันต้องการขยายหน้าต่างปัจจุบันของฉันเพื่อให้ปรากฏเป็นหน้าต่างขนาดใหญ่หนึ่งหน้าต่างบนจอภาพทั้งสอง ไม่มีใครรู้วิธีการทำสิ่งนี้ใน Windows หรือไม่
ฉันมีจอภาพสองจอและฉันต้องการขยายหน้าต่างปัจจุบันของฉันเพื่อให้ปรากฏเป็นหน้าต่างขนาดใหญ่หนึ่งหน้าต่างบนจอภาพทั้งสอง ไม่มีใครรู้วิธีการทำสิ่งนี้ใน Windows หรือไม่
คำตอบ:
ตรงกันข้ามกับสิ่งที่คนอื่นพูดนี่เป็นวิธีแก้ปัญหาการทำงานฟรีที่เพิ่มหน้าต่างที่อยู่ใต้เมาส์ให้ใหญ่ที่สุด
(เครดิตไปที่คนที่เขียนฟังก์ชัน 'autoit' ที่น่าทึ่งเหล่านี้ - ฉันเพิ่งเขียนบิตที่ใช้พวกเขา)
ดาวน์โหลด autoit และติดตั้ง (ซอฟต์แวร์ฟรี):
http://www.autoitscript.com/site/autoit/
สร้างไฟล์. aau3
วางสิ่งนี้ไว้ข้างใน:
#include <misc.au3>
#include <Array.au3>
HotKeySet('{ESC}', '_Exit')
Global $WinText, $OldMouse[2], $NewMouse[2], $Windows, $x, $MyWin, $MyCoords
$NewMouse = MouseGetPos()
$title = _GetWin()
WinSetState($MyWin,"",@SW_RESTORE)
WinMove($MyWin,"",0,0,3840,1165)
Func _GetWin()
Local $Coords
ToolTip("")
$Mouse = MouseGetPos()
$OldMouse = $Mouse
$Windows = _WinList()
;_ArrayDisplay($Windows, "")
For $x = 1 To UBound($Windows)-1
$Coords = WinGetPos($Windows[$x][0], "")
If $Coords = -4 Then ExitLoop
If IsArray($Coords) Then
If $Mouse[0] >= $Coords[0] And $Mouse[0] <= ($Coords[0]+$Coords[2]) And $Mouse[1] >= $Coords[1] And $Mouse[1] <= ($Coords[1]+$Coords[3]) Then ExitLoop
EndIf
Next
If $x = UBound($Windows) Then $x -= 1
$MyWin = $Windows[$x][0]
$Control = _MouseGetCtrlInfo()
$Return = $Windows[$x][0] & @CRLF & $Control
Return $Return
EndFunc
Func _WinList()
Local $WinListArray[1][2]
$var = WinList()
For $i = 1 to $var[0][0]
If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
Redim $WinListArray[UBound($WinListArray) + 1][2]
$WinListArray[UBound($WinListArray)-1][0] = $var[$i][0]
$WinListArray[UBound($WinListArray)-1][1] = $var[$i][1]
EndIf
Next
Return $WinListArray
EndFunc
Func IsVisible($handle)
If BitAnd( WinGetState($handle), 2 ) Then
Return 1
Else
Return 0
EndIf
EndFunc
Func _Exit()
Exit
EndFunc
Func _MouseGetCtrlInfo() ; get ID, Classe and Text of a control
Global $hWin = WinGetHandle($MyWin)
Global $sClassList = WinGetClassList($hWin)
Local $sSplitClass = StringSplit(StringTrimRight($sClassList, 1), @LF)
Local $aMPos = MouseGetPos()
;_ArrayDisplay($sSplitClass, "")
$MyCoords = ClientToScreen($hWin)
For $iCount = UBound($sSplitClass) - 1 To 1 Step - 1
Local $nCount = 0
If $sSplitClass[$iCount] = "WorkerW" Then ContinueLoop
While 1
$nCount += 1
$aCPos = ControlGetPos($hWin, '', $sSplitClass[$iCount] & $nCount)
If @error Then ExitLoop
$hCtrlWnd = ControlGetHandle ($hWin, "", $sSplitClass[$iCount] & $nCount)
If IsArray($aCPos) Then
If $aMPos[0] >= ($MyCoords[0]+$aCPos[0]) And $aMPos[0] <= ($MyCoords[0]+$aCPos[0] + $aCPos[2]) _
And $aMPos[1] >= ($MyCoords[1]+$aCPos[1]) And $aMPos[1] <= ($MyCoords[1]+$aCPos[1] + $aCPos[3]) Then
$aReturn = DllCall('User32.dll', 'int', 'GetDlgCtrlID', 'hwnd', $hCtrlWnd)
If @error Then Return "Err"
$Text = ControlGetText($hWin, '', $sSplitClass[$iCount] & $nCount)
If StringInStr($Text, @LF) Then $Text = "demasiado largo"
If IsArray($aReturn) Then Return 'ControlID: ' & $aReturn[0] & @CRLF & 'ClassNameNN: ' & $sSplitClass[$iCount] & $nCount & @CRLF & "Text: " & $Text
EndIf
EndIf
WEnd
Next
;_ArrayDisplay($sSplitClass, "")
Return "No Ctrl"
EndFunc
Func ClientToScreen($hWnd) ; get client area of a win relative to the screan
Local $Point, $aRes[2]
Local $cX, $cY
$Point = DllStructCreate("int;int")
DllStructSetData($Point, 1, $cX)
DllStructSetData($Point, 1, $cY)
DllCall("User32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($Point))
$aRes[0] = DllStructGetData($Point, 1)
$aRes[1] = DllStructGetData($Point, 2)
Return $aRes
EndFunc
จากนั้นเปลี่ยนสาย
WinMove ($ MyWin "" 0,0,3840,1165)
ค่านิยมของคุณ
จากนั้นคุณสามารถสร้างทางลัดของ Windows ไปที่ไฟล์นี้คลิกขวาที่คุณสมบัติ> และกำหนดทางลัด (เช่น CTRL + ALT + UP)
ส่วนใหญ่คุณจะพบว่าคุณจะต้องทำซ้ำขั้นตอนและสร้างไฟล์ที่สองเพื่อคืนค่าหน้าต่างให้มีขนาดเล็ก
หวังว่านี่จะช่วยได้
ใช้เครื่องมือการตรวจสอบสองทาง : เป็นชุดเครื่องมือฟรีที่จัดการการตั้งค่าหน้าจอหลายหน้าจอ
ในเครื่องมือสลับหน้าจอคุณสามารถกำหนดฮอตคีย์ให้กับ "หน้าต่างที่ใช้งานเพิ่มขนาดใหญ่" เพื่อให้คุณสามารถขยายให้ใหญ่สุดเพื่อครอบครองทุกหน้าจอ
เจฟฟ์ Axelrod มีทางออกที่ดีที่ใช้AutoHotKey
เขาแมปShift + Windows + Up
ชุดค่าผสมเพื่อขยายหน้าต่างให้ใหญ่ที่สุดในทุกหน้าจอWindows + Up
ซึ่งสอดคล้องกับปุ่มลัดของ Windows 7 ซึ่งเพิ่มหน้าต่างที่เลือกไว้ในหน้าจอเดียว
นี่คือรหัสของเขา (ขอบคุณ Jeff!):
;Shift + Windows + Up (maximize a window across all displays) https://stackoverflow.com/a/9830200/470749
+#Up::
WinGetActiveTitle, Title
WinRestore, %Title%
SysGet, X1, 76
SysGet, Y1, 77
SysGet, Width, 78
SysGet, Height, 79
WinMove, %Title%,, X1, Y1, Width, Height
return
หากคุณมีการ์ดวิดีโอ nVidia:
ตอนนี้เมื่อคุณคลิกปุ่มขยายใหญ่สุดมันจะครอบคลุมทั้งสองหน้าจอ ทาสก์บาร์ของคุณจะครอบคลุมทั้งจอภาพ หากข้อผิดพลาดคุณลองลากไปทางด้านซ้ายของจอภาพเพื่อให้เป็นแนวตั้ง (ใช้งานได้ดีกว่าถ้าคุณทำให้ไอคอนเล็กและใช้ 'ไม่รวมกัน')
ฉันใช้โปรแกรมอรรถประโยชน์ฟรีเพื่อทำ VirtualScreenMaximizer:
http://virtualscreenmax.codeplex.com/releases/view/20213
คุณสามารถปรับแต่งทางลัดที่จะใช้สำหรับการขยายใหญ่สุดและการกู้คืนและมันจะขยายหน้าต่างไปที่ทาสก์บาร์เมื่อขยายใหญ่สุด
ช้าไปหน่อย แต่ถ้าใช้ Intel integrated graphics คุณสามารถเปิด Intel graphics panel control, เลือกเมนู display และเลือก "display" หลาย ๆ จอจากนั้นเลือก "Collage" ซึ่งจะช่วยให้คุณเลือกจอภาพที่คุณต้องการขยายพร้อมกับตัวเลือกอื่น ๆ .
นี่เป็นภาพหน้าจอของมันที่เปิดใช้งาน:
คลิกและลากมิฉะนั้นคุณสามารถใช้กราฟิกการ์ดขั้นสูงเพื่อกำหนดค่าจอภาพให้ทำหน้าที่เป็นหน้าจอขนาดใหญ่
ใน Windows 7 ของฉันฉันสามารถลากหน้าต่างเพื่อให้ครอบคลุมทั้งสองหน้าจอ หากคุณคลิกขวาที่เดสก์ท็อปและเลือก "ความละเอียดหน้าจอ" คุณจะต้องเลือก "ขยายการแสดงผลเหล่านี้" ภายใต้ "การแสดงผลหลายจอ" หากคุณปิดหน้าต่างอีกครั้งควรจำขนาดและตำแหน่ง
หากใครยังคงพยายามทำสิ่งนี้โดยใช้autoitฉันจัดการทำได้โดยใช้รหัสนี้:
HotKeySet("^+{UP}", "Resize_Window") ; CTRL+SHIFT+UP
While 1
Sleep(1000)
WEnd
Func Resize_Window()
WinSetState("[ACTIVE]","",@SW_RESTORE)
WinMove("[ACTIVE]","",0,0,_WinAPI_GetSystemMetrics($SM_CXVIRTUALSCREEN),_WinAPI_GetSystemMetrics($SM_CYVIRTUALSCREEN))
EndFunc
ฉันใช้วิธีแก้ปัญหานี้กับ Sizer ( โฮมเพจ ) - ยูทิลิตี้ฟรีแวร์ขนาดเล็กช่วยให้คุณกำหนดขนาดหน้าต่างที่กำหนดไว้ล่วงหน้าโดยการคลิกขวาในพื้นที่ยืดหน้าต่าง
เพียงสร้างชุดโปรไฟล์:
จากนั้นเพียงคลิกขวาที่ด้านล่างขวาของหน้าต่างและเลือกโปรไฟล์
ฉันพบวิธีการทำเช่นนี้โดยไม่มีซอฟต์แวร์หรือรหัสใด ๆ มันไม่อัตโนมัติหรือสมบูรณ์แบบ แต่ง่ายและทำงานได้ดีพอ
คลิกขวาบนแถบเครื่องมือของ windows เลือกคืนค่าจากนั้นปรับขนาดบนหน้าจอทั้งสอง