উইন্ডোতে দ্বৈত মনিটরের উপর একটি উইন্ডোটি সর্বাধিক করুন?


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
এটা ভালবাসা! আমি এনভিডিয়া মোজাইক ব্যবহার করতে যাচ্ছিলাম, তবে যে মনিটরগুলি আমি দুটি পৃথক গ্রাফিক্স কার্ড থেকে সেখানে বিভক্ত করতে চেয়েছি, এবং কেভিএম ভিজিএ না করায় আবশ্যক হতে পারে না। কেবলমাত্র গ্যাচ্ছ্যা - আমি .au3 ফাইলটিতে শর্টকাট থেকে সরাসরি কাজ করতে কীবোর্ড শর্টকাটটি পেতে সক্ষম হইনি। আমি ব্যাচ স্ক্রিপ্টের শর্টকাট থেকে কাজ করতে একটি কীবোর্ড শর্টকাট পেতে সক্ষম হয়েছি যা যদিও au3 স্ক্রিপ্ট বলে।
paquetp

1
আপনার ডেস্কটপে স্ক্রিপ্ট ফাইলটি স্থাপন না করা পর্যন্ত শর্টকাট পদ্ধতিটি কাজ করে না।
নিকোস

1
২ টিরও বেশি মনিটর রয়েছে তাদের জন্য উইনমোভ (line মাইউইন, "", 0,0,3840,1165) লাইনে 0,0 লাইনটি সূচনা পয়েন্টের স্থানাঙ্কগুলি উপস্থাপন করে, তাই যে কোনও পরিবর্তন করে কোনও পরিমাণের পর্দা জুড়ে সর্বাধিকতর হতে পারে এই সংখ্যা অনুসারে।
ইলকাস্ট

আমাকে উইন 10-এ এই সর্বোচ্চকরণের শর্টকাট তৈরি করতে হবে এবং শর্টকাটের বৈশিষ্ট্যগুলি আমাকে একটি কী-শর্টকাট বরাদ্দ করতে দেয়; ব্যাচ দরকার নেই।
মার্টিন জাসকে

@ নিকোস এই স্ক্রিপ্টটি আমার পক্ষে কাজ করে তবে আমি উইন্ডোজ অবস্থানের জন্য সিনট্যাক্সটি বের করতে পারি না; আমার 0,0 মনে হয় আমার প্রধান মনিটরের উপরের বামে কোথাও "কাছাকাছি" রয়েছে তবে বেশ নয়। এছাড়াও আমার দ্বিতীয় মনিটরটি আমার প্রধান মনিটরের বাম দিকে রয়েছে (এবং স্ক্রিপ্টটি এর জন্য অনুমতি দেয় বলে মনে হচ্ছে তবে আমি অটোআইটি সিনট্যাক্সটি এখনও পড়ি না)। তবে স্ক্রিপ্টটি আমার প্রোগ্রামটিকে আমার প্রধান মনিটরের ডানদিকে খুলছে (যেখানে "কিছুই নেই")। আমি নেতিবাচক মান (-1920,0) এর দিকে ঝুঁকতে চেষ্টা করেছি কিন্তু এটি কার্যকর হয়নি, নেতিবাচক সংখ্যা প্রত্যাখ্যান করেছে। দয়া করে উপদেশ দাও. আপনার উত্তরটি একটি আনন্দের বিষয়, অনেক প্রোগ্রামের জন্য আমার সমাধান হবে, কেবল আরও শিখতে হবে
মার্টিন জাসকে

9

জেফ অ্যাক্সেলরোডের দুর্দান্ত সমাধান রয়েছে যা অটোহটকি ব্যবহার করে

তিনি 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

দু'টি স্ক্রিন এবং দুটি পৃথক গ্রাফিক্স ড্রাইভার সহ আমার উইন্ডোজ 10 সেটআপে শিফ্ট + উইন্ডোজ + আপ কাজ করে না। এখনও অন্যদের জন্য সম্ভাব্য দরকারী useful
মার্টিন জাসকে

8

দ্বৈত মনিটরের সরঞ্জামগুলি ব্যবহার করুন : এটি একাধিক স্ক্রিন সেটআপ পরিচালনা করে ফ্রি সরঞ্জামগুলির একটি সেট ।

ইন সোয়াপ পর্দা টুল আপনি তাই আপনি এটি বৃদ্ধি করতে পারেন সব পর্দা ব্যাপৃত "অতি বৃহত সক্রিয় উইন্ডো" করার জন্য একটি হট-ধার্য করতে পারেন।


2
বুদ্ধিমান ডিফল্ট (সমস্ত অক্ষম) সহ দুর্দান্ত প্রোগ্রাম যা আমি যা খুঁজছিলাম ঠিক তা করে, আল্ট্রামন থেকে আগত। একটি ইঙ্গিত: "সুপারভাইজ অ্যাক্টিভ উইন্ডো" এর হটকি টগলের মতো কাজ করে। এটিকে আবার আঘাত করা উইন্ডোটি পুনরুদ্ধার করে।
ফ্যানিস

3

আপনার যদি এনভিডিয়া ভিডিও কার্ড থাকে:

  1. ডেস্কটপে ডান ক্লিক করুন এবং "এনভিআইডিএ নিয়ন্ত্রণ প্যানেল" এ ক্লিক করুন
  2. ওয়ার্কস্টেশন এর অধীনে কার্য তালিকার নীচে, "মোজাইক সেট আপ করুন"। এটি ক্লিক করুন.
  3. ডান ফলকে, "মোজাইক সক্ষম করুন" এর পাশের চেকবক্সটি ক্লিক করুন
  4. প্রদর্শনগুলির অধীনে, আপনি যে মনিটরগুলি সংহত করতে চান তার পাশে চেকমার্ক রাখুন।
  5. কনফিগারেশনের অধীনে আপনি কী টপোলজিটি চান তা নির্বাচন করুন (পাশাপাশি, উল্লম্ব ..)
  6. স্ক্রিনের নীচে-ডানদিকে "প্রয়োগ করুন" ক্লিক করুন

এখন, আপনি যখন সর্বাধিক বোতামটি ক্লিক করেন, এটি উভয় মনিটরকে কভার করবে। আপনার টাস্কবার উভয় মনিটরকেও কভার করবে। যদি এটি আপনাকে বাগ দেয়, এটি মনিটরের বাম দিকে টেনে আনার চেষ্টা করুন যাতে এটি উল্লম্ব হয়ে যায় (আপনি যদি আইকনগুলি ছোট করেন এবং 'কখনই সংযুক্ত না করেন' ব্যবহার করেন তবে এটি আরও ভাল কাজ করে)।


2

ভার্চুয়ালস্ক্রিনম্যাক্সিমাইজার এটি করার জন্য আমি একটি নিখরচায় ইউটিলিটি ব্যবহার করি:

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

আপনি সর্বাধিকীকরণ এবং পুনরুদ্ধার করতে শর্টকাটগুলি কাস্টমাইজ করতে পারেন এবং সর্বাধিককরণের সময় এটি টাস্কবারের উপরে উইন্ডোটি প্রসারিত করবে।


2

কিছুটা দেরি হলেও ইন্টেল ইন্টিগ্রেটেড গ্রাফিক্স ব্যবহার করে আপনি ইন্টেল গ্রাফিক্স কন্ট্রোল প্যানেল খুলতে পারবেন, ডিসপ্লে মেনুটি নির্বাচন করতে পারেন এবং সেখান থেকে একাধিক ডিসপ্লে বেছে নিতে পারেন এবং "কোলাজ" বেছে নিতে পারবেন যা আপনাকে অন্য কিছু পছন্দের পাশাপাশি কোন মনিটরকে প্রসারিত করতে চান তা বেছে নিতে দেয় ।

এখানে এটির একটি স্ক্রিনশট সক্ষম করা আছে:

এটির একটি স্ক্রিনশট সক্ষম হয়েছে


1

ক্লিক করুন এবং টেনে আনুন, অন্যথায় আপনি মনিটরকে একটি বড় স্ক্রিন হিসাবে কাজ করতে কনফিগার করতে আপনার উন্নত গ্রাফিক্স কার্ড ব্যবহার করতে পারেন।


0

আমার উইন্ডোজ 7 এ আমি উইন্ডোটি টেনে আনতে সক্ষম হয়েছি যাতে এটি উভয় স্ক্রিনকেই coversেকে দেয়। আপনি যদি ডেস্কটপে ডানদিকে ক্লিক করেন এবং "স্ক্রিন রেজোলিউশন" চয়ন করেন, আপনাকে "একাধিক ডিসপ্লে" এর অধীনে "এই প্রদর্শনগুলি প্রসারিত করুন" বেছে নিতে হবে। আপনি যদি আবার উইন্ডোটি বন্ধ করেন তবে এটির আকার এবং অবস্থান মনে রাখা উচিত।


এটি সত্য, আমি একটি সমাধান খুঁজছি যেখানে আপনি উভয় মনিটরের সাথে শর্টকাট বা এর মতো কিছু দিয়ে উইন্ডোটি সহজেই সর্বাধিক করতে পারেন।
ক্র্যাকারজ্যাক

আপনি কি উইন্ডো শিরোনাম-বারটিকে কেবল পর্দার শীর্ষে টেনে আনতে পারবেন না
সুব্যাঙ্কি

@ সুবঙ্কি - না, এটি এখনকার মনিটরের উইন্ডোটি সর্বাধিক বাড়িয়ে তুলবে (যার সাথে আপনি "ধাক্কা
মেরেছিলেন

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

আমি সাইজার ( হোমপেজ ) এর সাহায্যে এই কার্যকারিতাটি ব্যবহার করি - এর ছোট ফ্রিওয়্যার ইউটিলিটি আপনাকে উইন্ডো প্রসারিত অঞ্চলে ডান ক্লিক করে পূর্বনির্ধারিত উইন্ডোজ আকার সেট করতে দেয়।

স্রেফ প্রোফাইল সেট তৈরি করুন:

  • প্রস্থ = মনিটরের প্রস্থের যোগফল
  • উচ্চতা = মনিটরের উচ্চতা - টাস্কবারের উচ্চতা (= 40)
  • শীর্ষে বাম দিকে সরান।

তারপরে উইন্ডোটির ডান-নীচে প্রান্তে ডান ক্লিক করুন এবং প্রোফাইল নির্বাচন করুন।

এখানে চিত্র বর্ণনা লিখুন


0

আমি কোনও সফ্টওয়্যার বা কোড ছাড়াই এটি করার একটি উপায় পেয়েছি। এটি স্বয়ংক্রিয় বা নিখুঁত নয়, তবে এটি সহজ এবং যথেষ্ট কার্যকর।

  1. উইন্ডোজ + বাম বা ডান তীর কীটি দুটি মনিটরের দূরত্বে উইন্ডোটির অর্ধেক মনিটরে স্ন্যাপ করতে
  2. উইন্ডোটির প্রান্তটি ধরুন এবং এটিকে উভয় মনিটরে ধরে খুব দূরে টেনে আনুন

0

উইন্ডোজের সরঞ্জামদণ্ডে ডান ক্লিক করুন, পুনরুদ্ধার নির্বাচন করুন, তারপরে উভয় স্ক্রিনে এটি আকার দিন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.