विंडोज में दोहरी मॉनिटर पर एक विंडो अधिकतम करें?


44

मेरे पास दोहरी मॉनिटर हैं और मैं अपनी वर्तमान विंडो को फैलाना चाहता हूं ताकि यह दोनों मॉनिटरों पर एक विशाल विंडो के रूप में दिखाई दे। क्या किसी को पता है कि विंडोज में यह कैसे करना है?


जवाबों:


17

अन्य लोग जो कह रहे हैं, उसके विपरीत, यहां एक मुफ्त, काम करने वाला समाधान है जो माउस के नीचे की खिड़की को अधिकतम करता है।

(क्रेडिट उस आदमी के पास जाते हैं, जिन्होंने ये अद्भुत 'ऑटोिट' फ़ंक्शंस लिखे थे - मैंने बस थोड़ा सा लिखा है जो उनका उपयोग करता है।)

डाउनलोड करें और इसे स्थापित करें (मुफ्त सॉफ्टवेयर):

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)

अपनी पसंद के मूल्यों के लिए।

फिर आप इस फ़ाइल में एक विंडोज़ शॉर्टकट बना सकते हैं, इसे राइट-क्लिक करें- गुण, और एक शॉर्टकट असाइन कर सकते हैं (जैसे CTRL + ALT + UP)।

सबसे अधिक संभावना है कि आप पाएंगे कि आपको एक छोटे आकार में विंडो को पुनर्स्थापित करने के लिए प्रक्रिया को दोहराने और दूसरी फाइल बनाने की आवश्यकता होगी।

उम्मीद है की यह मदद करेगा


1
इसे प्यार करना! मैं NVidia मोज़ेक का उपयोग करने जा रहा था, लेकिन मॉनिटर मैं दो अलग ग्राफिक्स कार्ड से अलग करना चाहता था, और KVM VGA नहीं करने के कारण पुन: प्रयोज्य नहीं कर सकता था। केवल गोटीया - मैं .au3 फ़ाइल के शॉर्टकट से सीधे काम करने के लिए कीबोर्ड शॉर्टकट प्राप्त करने में सक्षम नहीं था। हालांकि मैं au3 स्क्रिप्ट कहे जाने वाले बैच स्क्रिप्ट के शॉर्टकट को काम करने के लिए कीबोर्ड शॉर्टकट प्राप्त करने में सक्षम था।
19

1
वास्तव में शॉर्टकट विधि तब तक काम नहीं करती है, जब तक कि स्क्रिप्ट फ़ाइल आपके डेस्कटॉप पर न रखी जाए।
निकोस

1
2 से अधिक मॉनिटर रखने वालों के लिए, लाइन WinMove ($ MyWin, "", 0,0,3840,1165) में 0,0 शुरुआती बिंदु के निर्देशांक का प्रतिनिधित्व करता है, इसलिए कोई भी स्क्रीन को बदलकर किसी भी राशि को अधिकतम कर सकता है तदनुसार इन नंबरों।
इलकास्ट

मुझे Win 10 में इस max.au3 का शॉर्टकट बनाना है, और शॉर्टकट के गुणों से मुझे की-शॉर्टकट असाइन करना है; बैच की जरूरत नहीं।
मार्टिन जसके

@ मिनिकोस यह स्क्रिप्ट मेरे लिए काम करती है, लेकिन मैं विंडोज़ स्थिति के लिए सिंटैक्स का पता नहीं लगा सकता; लगता है कि मेरा 0,0 कहीं न कहीं "पास" है, जो मेरे मुख्य मॉनिटर के शीर्ष पर है लेकिन काफी नहीं है। इसके अलावा मेरा दूसरा मॉनीटर मेरे मुख्य मॉनीटर के बाईं ओर है (और स्क्रिप्ट इस तरह की अनुमति देती है, लेकिन मैं अभी तक AutoIt वाक्यविन्यास नहीं पढ़ता हूं)। लेकिन स्क्रिप्ट मेरे मुख्य मॉनिटर के दाईं ओर मेरा प्रोग्राम खोल रही है (जहां "कुछ भी नहीं है")। मैंने एक नकारात्मक मान (-1920,0) को हुक करने की कोशिश की लेकिन वह काम नहीं किया, नकारात्मक संख्याओं ने इनकार कर दिया। कृपया सलाह दें। आपका जवाब एक खुशी है, कई कार्यक्रमों के लिए मेरा समाधान होगा, बस और अधिक जानने की आवश्यकता है
मार्टिन जसके

9

जेफ Axelrod एक महान समाधान है कि AutoHotKey का उपयोग करता है

वह Shift + Windows + Upसभी डिस्प्ले में एक विंडो को अधिकतम करने के लिए संयोजन को मैप करता है, जो विंडोज 7 के Windows + Upहॉटकी की तारीफ करता है, जो एक मॉनिटर में चयनित विंडो को अधिकतम करता है।

यहाँ उसका कोड है (धन्यवाद जेफ!):

;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

Shift + Windows + Up मेरे विंडोज 10 सेटअप पर दो स्क्रीन और दो अलग ग्राफिक्स ड्राइवरों के साथ काम नहीं करता है। अभी भी संभावित रूप से दूसरों के लिए उपयोगी है।
मार्टिन जसके

8

डुअल मॉनिटर टूल्स का उपयोग करें : यह कई स्क्रीन सेटअप को प्रबंधित करने वाले मुफ्त टूल का एक सेट है ।

में स्वैप स्क्रीन उपकरण आप बढ़ा सकते हैं सभी स्क्रीन पर कब्जा करने के लिए "सुपरसाइज़ सक्रिय विंडो" करने के लिए एक हॉटकी असाइन कर सकते हैं।


2
उत्कृष्ट चूक (सभी विकलांग) के साथ उत्कृष्ट कार्यक्रम जो वास्तव में वही था जो मैं देख रहा था, अल्ट्रामन से आ रहा था। एक संकेत: हॉटकी "टॉगल की तरह" सक्रिय विंडो को सुपरसेट करने के लिए। इसे मारना फिर से खिड़की को पुनर्स्थापित करता है।
फणीस

3

यदि आपके पास एक वीडियो वीडियो कार्ड है:

  1. डेस्कटॉप पर राइट-क्लिक करें, और "NVIDIA कंट्रोल पैनल" पर क्लिक करें
  2. वर्कस्टेशन के तहत, कार्यों की सूची के निचले भाग में "सेट अप मोज़ेक" है। इसे क्लिक करें।
  3. दाएँ फलक में, "सक्षम मोज़ेक" के बगल में स्थित चेकबॉक्स पर क्लिक करें।
  4. प्रदर्शन के तहत, आपके द्वारा संयोजित किए जाने वाले मॉनिटर के बगल में स्थित चेकमार्क डालें।
  5. कॉन्फ़िगरेशन के तहत, आप क्या टोपोलॉजी चाहते हैं (साइड-बाय-साइड, वर्टिकल ..)
  6. स्क्रीन के नीचे-दाईं ओर, "लागू करें" पर क्लिक करें

अब, जब आप अधिकतम बटन पर क्लिक करते हैं, तो यह दोनों मॉनिटरों को कवर करेगा। आपका टास्कबार भी दोनों मॉनिटर को कवर करेगा। यदि आप इसे बग करते हैं, तो इसे मॉनिटर के बाईं ओर खींचने का प्रयास करें ताकि यह लंबवत हो जाए (यह बेहतर काम करता है यदि आप आइकन को छोटा करते हैं और 'कभी गठबंधन नहीं करते हैं')।


2

मैं ऐसा करने के लिए एक मुफ्त उपयोगिता का उपयोग करता हूं, VirtualScreenMaximizer:

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

आप अधिकतम करने और पुनर्स्थापित करने के लिए उपयोग करने के लिए शॉर्टकट को अनुकूलित कर सकते हैं, और अधिकतम करने पर यह टास्कबार पर खिड़की का विस्तार करेगा।


2

थोड़ी देर लेकिन अगर इंटेल एकीकृत ग्राफिक्स का उपयोग करके आप इंटेल ग्राफिक्स कंट्रोल पैनल खोल सकते हैं, डिस्प्ले मेनू का चयन करें और वहां से कई डिस्प्ले चुनें और "कोलाज" चुनें यह आपको चुनने देगा कि आप किन मॉनिटरों के साथ कुछ अन्य विकल्पों के साथ विस्तार करना चाहते हैं। ।

यहां इसका स्क्रीनशॉट सक्षम है:

इसका स्क्रीनशॉट सक्षम है


1

क्लिक करें और खींचें, अन्यथा आप मॉनिटर को एक बड़ी स्क्रीन के रूप में कार्य करने के लिए कॉन्फ़िगर करने के लिए अपने उन्नत ग्राफिक्स कार्ड का उपयोग कर सकते हैं।


0

अपने विंडोज 7 पर मैं खिड़की को खींचने में सक्षम हूं ताकि यह दोनों स्क्रीन को कवर करे। यदि आप अपने डेस्कटॉप पर राइट क्लिक करते हैं और "स्क्रीन रिज़ॉल्यूशन" चुनते हैं, तो आपको "कई डिस्प्ले" के तहत "इन डिस्प्ले का विस्तार" करना होगा। यदि आप खिड़की को फिर से बंद करते हैं तो इसे आकार और स्थिति याद रखना चाहिए।


यह सच है, मैं एक ऐसे समाधान की तलाश कर रहा हूं, जहां आप आसानी से किसी भी शॉर्टकट या कुछ इस तरह से दोनों मॉनिटरों से खिड़की को अधिकतम कर सकें।
क्रैकरजैक 16

क्या आप ऐसा नहीं कर सकते हैं, बस खिड़की के टाइटल-बार को स्क्रीन के शीर्ष पर
खींचकर

@subanki - नहीं, यह वर्तमान मॉनिटर पर खिड़की को अधिकतम करेगा (एक जिसे आपने "टकराया था")
क्रिस_के सेप

0

अगर कोई भी अभी भी यह करने की कोशिश कर रहा है कि मैं इस कोड का उपयोग कर रहा है, तो मैं इस ऑटो का उपयोग कर रहा हूं:

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

WinAPI.au3 और WindowsConstants.au3 को शामिल करने के बाद यह काम करता है।
मैक्स होहाइनेगर

0

मैं इस वर्कअराउंड का उपयोग Sizer ( मुखपृष्ठ ) के साथ करता हूं - इसकी छोटी फ्रीवेयर उपयोगिता आपको विंडो स्ट्रेच क्षेत्र में राइट-क्लिक करके पूर्वनिर्धारित विंडोज़ आकार सेट करने की अनुमति देती है।

बस प्रोफाइल सेट बनाएं:

  • चौड़ाई = मॉनिटर की चौड़ाई का योग
  • ऊंचाई = मॉनिटर ऊंचाई - टास्कबार ऊंचाई (= 40)
  • ऊपर ले जाना = ऊपर छोड़ दिया।

इसके बाद विंडो के राइट-बॉटम एंड पर राइट क्लिक करें और प्रोफाइल को चुनें।

यहाँ छवि विवरण दर्ज करें


0

मुझे बिना किसी सॉफ्टवेयर या कोड के ऐसा करने का तरीका मिला। यह स्वचालित या सही नहीं है, लेकिन आसान है और अच्छी तरह से काम करता है।

  1. विंडोज + बाएं या दाएं तीर कुंजी दो मॉनिटर के दूर किनारे पर विंडो को आधा मॉनिटर करने के लिए
  2. खिड़की के किनारे को पकड़ो और इसे दूर तक दोनों मॉनिटर पर खींचें

0

विंडोज़ के टूलबार पर राइट क्लिक करें, रिस्टोर चुनें, फिर दोनों स्क्रीन पर इसे आकार दें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.