Jawaban:
Berbeda dengan apa yang dikatakan orang lain, ini adalah solusi gratis yang berfungsi yang memaksimalkan jendela yang ada di bawah mouse.
(Kredit diberikan kepada orang yang menulis fungsi 'autoit' yang luar biasa ini - Saya baru saja menulis bit yang menggunakannya.)
Unduh autoit dan instal (perangkat lunak gratis):
http://www.autoitscript.com/site/autoit/
Buat file .au3.
Rekatkan ini di dalam:
#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
Kemudian ganti baris
WinMove ($ MyWin, "", 0,0,3840,1165)
dengan nilai-nilai yang Anda sukai.
Kemudian Anda dapat membuat pintasan windows ke file ini, klik kanan properti->, dan tetapkan pintasan (mis. CTRL + ALT + UP).
Kemungkinan besar Anda akan menemukan bahwa Anda perlu mengulangi prosedur dan membuat file kedua untuk mengembalikan jendela ke ukuran kecil.
Semoga ini membantu
Jeff Axelrod memiliki solusi hebat yang menggunakan Autohotkey .
Dia memetakan Shift + Windows + Up
kombinasi untuk memaksimalkan jendela di semua tampilan, yang memuji Windows + Up
tombol pintas Windows 7 , yang memaksimalkan jendela yang dipilih dalam satu monitor.
Ini kodenya (terima kasih 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
Gunakan Dual Monitor Tools : ini adalah seperangkat alat gratis yang mengelola pengaturan beberapa layar.
Di alat Swap layar Anda dapat menetapkan tombol pintas ke "Jendela aktif Supersize" sehingga Anda dapat memaksimalkannya untuk menempati semua layar.
Jika Anda memiliki kartu video nVidia:
Sekarang, ketika Anda mengklik tombol Maksimalkan, itu akan mencakup kedua monitor. Bilah tugas Anda juga akan mencakup kedua monitor. Jika itu mengganggu Anda, coba seret ke kiri monitor sehingga menjadi vertikal (ini berfungsi lebih baik jika Anda membuat ikon kecil dan gunakan 'tidak pernah bergabung').
Saya menggunakan utilitas gratis untuk melakukannya, VirtualScreenMaximizer:
http://virtualscreenmax.codeplex.com/releases/view/20213
Anda dapat menyesuaikan pintasan yang digunakan untuk memaksimalkan dan memulihkan, dan itu akan memperluas jendela di atas bilah tugas saat memaksimalkan.
Agak terlambat tetapi jika menggunakan grafis terintegrasi Intel Anda dapat membuka panel kontrol grafis Intel, pilih menu tampilan dan dari sana pilih beberapa layar dan pilih "Kolase" ini akan memungkinkan Anda memilih monitor mana yang ingin Anda rentangkan bersama dengan beberapa pilihan lain. .
Berikut tangkapan layar yang diaktifkan:
Di Windows 7 saya, saya bisa menarik jendela sehingga menutupi kedua layar. Jika Anda mengklik kanan desktop Anda dan memilih "resolusi layar", Anda harus memilih "memperpanjang tampilan ini" di bawah "beberapa tampilan". Jika Anda menutup kembali jendela itu harus mengingat ukuran dan posisi.
Jika ada yang masih mencoba melakukan ini menggunakan autoit saya berhasil melakukan ini menggunakan kode ini:
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
Saya menggunakan solusi ini dengan Sizer ( beranda ) - utilitas freeware yang kecil memungkinkan Anda untuk mengatur ukuran windows yang telah ditentukan dengan mengklik kanan di area Window stretch.
Cukup buat set profil:
Kemudian klik kanan ke ujung kanan bawah Window dan pilih profil.
Saya menemukan cara untuk melakukan ini tanpa perangkat lunak atau kode. Ini tidak otomatis atau sempurna, tetapi mudah dan bekerja dengan cukup baik.
Klik kanan pada toolbar windows, pilih Restore, lalu ubah ukurannya di kedua layar.