Come si può massimizzare una window sui monitor doppio in Windows?

Ho doppio monitor e voglio spianare la mia window corrente in modo da apparire come una window gigante su entrambi i monitor. Qualcuno sa come farlo in modo nativo dalle windows? In caso contrario, le utility libere che possono farlo?

A differenza di quanto dicono gli altri, qui è una soluzione di lavoro libera che massimizza la window che è sotto il mouse.

(Crediti vai al ragazzo che ha scritto queste incredibili funzioni 'autoit' – ho appena scritto il bit che li utilizza.)

Scarica autoit e installa (software libero):

http://www.autoitscript.com/site/autoit/

Creare un file .au3.

Incollare questo all'interno:

#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 

Quindi cambiare la linea

WinMove ($ MyWin, "", 0,0,3840,1165)

ai valori del tuo gradimento.

Quindi è ansible creare una scorciatoia da Windows a questo file, fare clic con il button destro del mouse sulla properties;-> e assegnare un collegamento (ad esempio CTRL + ALT + UP).

Molto probabilmente trovenetworking che dovrai ripetere la procedura e creare un secondo file per ripristinare la window di una piccola dimensione.

Spero che questo ti aiuti

Utilizza strumenti Dual Monitor : è un insieme di strumenti gratuiti che gestiscono l'impostazione di più schermi.

Lo strumento dello schermo Swap consente di assegnare un hotkey alla window "Superare la window triggers" in modo da poterli ingrandire per occupare tutte le schermate.

Jeff Axelrod ha una grande soluzione che utilizza AutoHotKey .

Esegue la mapping della combinazione Shift + Windows + Up per ottimizzare una window in tutti i display, che complimenta con la tastiera rapida Windows + Up Windows 7, che massimizza la window selezionata in un monitor.

Ecco il suo codice (grazie a 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 

Utilizzo una utility gratuita per farlo, VirtualScreenMaximizer:

http://virtualscreenmax.codeplex.com/releases/view/20213

È ansible personalizzare i collegamenti da utilizzare per massimizzare e ripristinare e espanderà la window sulla barra delle attività quando si massimizza.

A less che non si dispone di una scheda ATi con supporto Eyefinity, non è ansible estendere una window a entrambe le schermate. Purtroppo, sembra che non ci sia alcuna utilità gratuita per fare lo stesso, ci sono paio di strumenti a pagamento, tra cui Ultbranchn .

Fare clic e trascinare, altrimenti è ansible utilizzare la scheda grafica avanzata per configurare i monitor come un grande schermo.

Se si dispone di una scheda video nVidia:

  1. Fare clic con il button destro del mouse sul desktop e fare clic su "NVIDIA Control Panel"
  2. Nella parte inferiore dell'elenco delle attività, in Workstation, è "Configura Mosaico". Cliccalo.
  3. Nel riquadro destro, fare clic sulla casella di controllo accanto a "Attiva Mosaico"
  4. In visualizzazioni, inserire i segni di spunta accanto ai monitor che si desidera combinare.
  5. In Configurazione, select la topologia desiderata (side-by-side, vertical ..)
  6. In basso a destra dello schermo, fai clic su "Applica"

Ora, quando si fa clic sul button Massimo, coprirà entrambi i monitor. La barra delle applicazioni coprirà anche entrambi i monitor. Se ti bugiuli, prova a trascinarla a sinistra del monitor in modo che diventi verticale (questo funziona meglio se fai piccole icone e usi "non unisci mai").

Nel mio Windows 7 sono in grado di trascinare la window in modo da coprire entrambe le schermate. Se fai clic destro sul desktop e scegli la "risoluzione dello schermo", dovrai scegliere "estendere questi display" in "visualizzazioni multiple". Se si chiude di nuovo la window deve ricordare la dimensione e la posizione.

Se qualcuno sta ancora provando a farlo usando autoit ho riuscito a farlo usando questo codice:

 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