Câu trả lời:
Ngược lại với những gì người khác đang nói, đây là một giải pháp làm việc miễn phí, tối đa hóa cửa sổ nằm dưới con chuột.
(Tín dụng dành cho anh chàng đã viết các chức năng 'tự động' tuyệt vời này - Tôi chỉ viết bit sử dụng chúng.)
Tải về autoit và cài đặt nó (phần mềm miễn phí):
http://www.autoitscript.com/site/autoit/
Tạo một tập tin .au3.
Dán cái này vào bên trong:
#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
Sau đó thay đổi dòng
WinMove ($ MyWin, "", 0,0,3840,1165)
theo các giá trị theo ý thích của bạn.
Sau đó, bạn có thể tạo lối tắt windows cho tệp này, nhấp chuột phải vào nó-> thuộc tính và gán phím tắt (ví dụ: CTRL + ALT + UP).
Nhiều khả năng bạn sẽ thấy rằng bạn sẽ cần phải lặp lại quy trình và tạo một tệp thứ hai để khôi phục cửa sổ về kích thước nhỏ.
Hi vọng điêu nay co ich
Jeff Axelrod có một giải pháp tuyệt vời sử dụng AutoHotKey .
Anh ta ánh xạ sự Shift + Windows + Up
kết hợp để tối đa hóa một cửa sổ trên tất cả các màn hình, điều này khen ngợi Windows + Up
phím nóng của Windows 7 , giúp tối đa hóa cửa sổ được chọn trong một màn hình.
Đây là mã của anh ấy (cảm ơn 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
Sử dụng Công cụ màn hình kép : đó là một bộ công cụ miễn phí quản lý nhiều thiết lập màn hình.
Trong công cụ màn hình Hoán đổi, bạn có thể gán một phím nóng cho "Cửa sổ siêu kích hoạt" để bạn có thể tối đa hóa nó để chiếm tất cả các màn hình.
Nếu bạn có thẻ video nVidia:
Bây giờ, khi bạn nhấp vào nút Tối đa hóa, nó sẽ che cả hai màn hình. Thanh tác vụ của bạn cũng sẽ bao gồm cả hai màn hình. Nếu điều đó làm phiền bạn, hãy thử kéo nó sang bên trái màn hình để màn hình trở nên thẳng đứng (điều này hoạt động tốt hơn nếu bạn làm cho các biểu tượng nhỏ lại và sử dụng 'không bao giờ kết hợp').
Tôi sử dụng một tiện ích miễn phí để làm như vậy, VirtualScreenMaximizer:
http://virtualscreenmax.codeplex.com/release/view/20213
Bạn có thể tùy chỉnh các phím tắt để sử dụng để tối đa hóa và khôi phục và nó sẽ mở rộng cửa sổ qua thanh tác vụ khi tối đa hóa.
Hơi muộn một chút nhưng nếu sử dụng đồ họa tích hợp Intel, bạn có thể mở bảng điều khiển đồ họa Intel, chọn menu hiển thị và từ đó chọn nhiều màn hình và chọn "Ghép ảnh", điều này sẽ cho phép bạn chọn màn hình nào bạn muốn mở rộng cùng với một số lựa chọn khác .
Đây là một ảnh chụp màn hình của nó được kích hoạt:
Trên Windows 7 của tôi, tôi có thể kéo cửa sổ để nó che cả hai màn hình. Nếu bạn nhấp chuột phải vào máy tính để bàn của bạn và chọn "độ phân giải màn hình", bạn phải chọn "mở rộng các màn hình này" trong "nhiều màn hình". Nếu bạn đóng cửa sổ một lần nữa, nó sẽ nhớ kích thước và vị trí.
Nếu ai vẫn đang cố gắng để làm điều này bằng AutoIt tôi quản lý thực hiện điều này sử dụng mã này:
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
Tôi sử dụng cách giải quyết này với Sizer ( trang chủ ) - tiện ích phần mềm miễn phí nhỏ của nó cho phép bạn đặt kích thước cửa sổ được xác định trước bằng cách nhấp chuột phải vào vùng Mở rộng cửa sổ.
Chỉ cần tạo bộ hồ sơ:
Sau đó chỉ cần nhấp chuột phải vào cuối bên phải của Cửa sổ và chọn hồ sơ.
Tôi tìm thấy một cách để làm điều này mà không cần bất kỳ phần mềm hoặc mã. Nó không tự động hoặc hoàn hảo, nhưng dễ dàng và hoạt động đủ tốt.
Nhấp chuột phải vào thanh công cụ của windows, chọn Khôi phục, sau đó thay đổi kích thước trên cả hai màn hình.