İkili monitörüm var ve her iki monitörde dev bir pencere olarak görünmesini sağlamak için mevcut penceremi açmak istiyorum. Bunu Windows'ta yerel olarak nasıl yapacağını bilen var mı?
İkili monitörüm var ve her iki monitörde dev bir pencere olarak görünmesini sağlamak için mevcut penceremi açmak istiyorum. Bunu Windows'ta yerel olarak nasıl yapacağını bilen var mı?
Yanıtlar:
Başkalarının söylediğinin aksine, işte fare altındaki pencereyi büyüten ücretsiz, çalışan bir çözüm.
(Krediler, bu şaşırtıcı 'autoit' işlevlerini yazan adama gider - Ben onları kullanan parçayı yazdım.)
Autoit'i indirin ve kurun (ücretsiz yazılım):
http://www.autoitscript.com/site/autoit/
Bir .au3 dosyası oluşturun.
Bunu içine yapıştırın:
#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
O zaman çizgiyi değiştir
WinMove ($ MyWin; ""; 0,0,3840,1165)
beğeninize değerlerine.
Daha sonra bu dosyaya bir pencere kısayolu oluşturabilir, dosyaya> özellikleri sağ tıklayıp kısayol atayabilirsiniz (örn. CTRL + ALT + UP).
Büyük olasılıkla, işlemi tekrarlamanız ve pencereyi küçük bir boyuta geri yüklemek için ikinci bir dosya oluşturmanız gerekeceğini göreceksiniz.
Bu yardımcı olur umarım
İkili Monitör Araçlarını Kullan : Birden fazla ekran kurulumunu yöneten ücretsiz araçlar kümesidir .
Gelen Takas ekranı tüm ekranları işgal etmek büyütebilirsiniz böylece aracı size "Supersize aktif pencere" için bir kısayol tuşu atayabilirsiniz.
Jeff Axelrod, AutoHotKey kullanan harika bir çözüme sahiptir .
Shift + Windows + Up
Windows 7'nin Windows + Up
kısayol tuşunu tamamlayan ve seçilen pencereyi tek bir monitörde büyüten tüm ekranlarda bir pencereyi büyütmek için kombinasyonu eşler .
İşte onun kodu (teşekkürler 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
Bir nVidia ekran kartınız varsa:
Şimdi, Büyüt düğmesine tıkladığınızda, her iki monitörü de kapsayacak. Görev çubuğunuz ayrıca her iki monitörü de kapsayacaktır. Bu sizi rahatsız ediyorsa, monitörün soluna sürükleyerek dikey hale gelmesini sağlayın (simgeleri küçük yaparsanız ve 'asla birleştirme'yi kullanmazsanız daha iyi çalışır).
Bunu yapmak için ücretsiz bir yardımcı program kullanıyorum, VirtualScreenMaximizer:
http://virtualscreenmax.codeplex.com/releases/view/20213
En üst düzeye çıkarmak ve geri yüklemek için kullanılacak kısayolları özelleştirebilirsiniz; en üst düzeye çıkarırken pencereyi görev çubuğunun üzerinden genişletir.
Biraz geç ama Intel tümleşik grafikleri kullanıyorsanız, Intel grafik kontrol panelini açabilir, ekran menüsünü seçebilir ve oradan birden fazla ekran seçip "Kolaj" ı seçmeniz, hangi monitörleri genişletmek istediğinizi seçmenize olanak sağlar. .
İşte etkin bir ekran görüntüsü:
Windows 7'mde her iki ekranı da kapsayacak şekilde pencereyi sürükleyebiliyorum. Masaüstünüze sağ tıklayıp "ekran çözünürlüğü" nü seçtiyseniz, "birden fazla ekran" altında "bu ekranları genişlet" i seçmelisiniz. Pencereyi tekrar kapatırsanız, boyut ve konumu hatırlamanız gerekir.
Eğer kimse bunu autoit kullanarak yapmaya çalışıyorsa, şunu yaptım:
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 ile bu geçici çözümü kullanıyorum ( ana sayfa ) - küçük ücretsiz yazılımı, önceden tanımlanmış pencerelerin boyutunu Pencere genişletme alanında sağ tıklatarak ayarlamanızı sağlar.
Sadece profil grubu oluştur:
Sonra sadece pencerenin sağ alt ucuna sağ tıklayın ve profili seçin.
Herhangi bir yazılım veya kod olmadan bunu yapmanın bir yolunu buldum. Otomatik veya mükemmel değil, kolay ve yeterince iyi çalışıyor.
Pencerelerin araç çubuğuna sağ tıklayın, Geri Yükle'yi seçin ve ardından her iki ekranda da yeniden boyutlandırın.