답변:
다른 사람들의 말과 달리 여기에 마우스 아래에있는 창을 최대화하는 무료로 작동하는 솔루션이 있습니다.
(이 놀라운 '자동'기능을 작성한 사람에게 크레딧이 제공됩니다. 나는 그 기능을 사용하는 비트를 작성했습니다.)
autoit을 다운로드하여 설치하십시오 (무료 소프트웨어).
http://www.autoitscript.com/site/autoit/
.au3 파일을 작성하십시오.
이것을 안에 붙여 넣으십시오.
#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).
대부분의 경우 절차를 반복하고 창을 작은 크기로 복원하기 위해 두 번째 파일을 만들어야합니다.
도움이 되었기를 바랍니다
Jeff Axelrod는 AutoHotKey 를 사용 하는 훌륭한 솔루션 을 제공합니다 .
그는 Shift + Windows + Up
모든 디스플레이에서 창을 최대화하기 위해 조합을 매핑하여 Windows 7의 Windows + Up
단축키 를 보완 하여 한 모니터에서 선택한 창을 최대화합니다.
그의 코드는 다음과 같습니다 (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
최대화 및 복원에 사용할 바로 가기를 사용자 정의 할 수 있으며 최대화시 작업 표시 줄 위로 창을 확장합니다.
내 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
창의 도구 모음을 마우스 오른쪽 단추로 클릭하고 복원을 선택한 다음 두 화면에서 크기를 조정하십시오.