ฟีเจอร์ Windows 7 หรือฟรีแวร์เพื่อให้หน้าต่างอยู่ภายใต้ผู้อื่นเสมอ


8

บางโปรแกรมเช่น GridMove และ XNeat อนุญาตให้ผู้ใช้เก็บหน้าต่างที่กำหนดไว้เหนือหน้าต่างอื่นโดยใช้คำสั่ง "Always On Top" มีวิธีการย้อนกลับคือ "Always At The Bottom" กับคำสั่ง Windows 7 หรือฟรีแวร์ใด ๆ ยกเว้นโดยการทำหน้าต่างอื่น ๆ "Always On Top" ทั้งหมดหรือไม่

บางครั้งมีประโยชน์ในการทำให้โปรแกรมแชท (เกิดการพิมพ์) ใต้หน้าต่างทั้งหมดที่มีเฉพาะข้อความล่าสุดและช่องป้อนข้อความที่มองเห็นผ่านช่องว่างของหน้าต่างโดยไม่มีส่วนที่เหลือของ UI ของโปรแกรมแชททำให้พื้นที่ว่าง


1
ไม่ไม่มีฟีเจอร์ในตัวภายใน Win32 Library ที่อนุญาตให้โปรแกรมเมอร์บังคับให้แอปพลิเคชันทำงานกับพื้นหลัง มันเป็นเหตุผลที่บอกโปรแกรมอื่น ๆ foregroundที่จะไป
Ramhound

คุณสามารถทำให้หน้าต่างนั้นดูผ่านการเปลี่ยนแปลงความโปร่งใสของฉัน (เครื่องมือหลายอย่างสามารถทำได้) หรือคุณสามารถใช้ AutoHotkey เพื่อย่อขนาดให้เล็กลงไปในถาด (ถ้ามันไม่ได้ฆ่าวัตถุประสงค์ :-))
Ankit

1
แม้ว่า Win32 จะไม่สนับสนุนสิ่งนี้ แต่คุณสามารถส่งหน้าต่างไปยังพื้นหลังในช่วงเวลาใดก็ตาม แต่ฉันก็ไม่รู้ว่ามันจะยังคงโฟกัสอยู่หรือไม่ บางทีคุณอาจหาวิธีส่งหน้าต่างไปทางด้านหลังโดยอัตโนมัติทันทีที่สูญเสียการโฟกัสแทน อีกทางเลือกหนึ่งคือการปูกระเบื้องหน้าต่างดังนั้นคุณไม่ควรกังวลกับดัชนี z ...
MarioDS

คำตอบ:


1

เมื่อนานมาแล้ว Windows มี PowerToy (ต่อมาใน TweakUI) ที่เรียกว่า X-Mouse ซึ่งเหนือสิ่งอื่นใดการสนับสนุน X "การโฟกัสแบบเก่าตามด้วยเมาส์" ซึ่ง "โฟกัส" และ "เบื้องหน้า" นั้นไม่ใช่สิ่งเดียวกัน ฉันไม่เชื่อว่ามันจะได้รับการปรับปรุงอีกต่อไป (การพบเห็นครั้งสุดท้ายสำหรับ WinXP)

แต่ผมไม่ได้ใช้มันอย่างกว้างขวางฟรีเครื่องมือ Windows สคริปต์AutoITสามารถทำสิ่งที่คุณต้องการกับสคริปต์สั้น:

#include <WinAPI.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>
#include <MenuConstants.au3>
#include <SendMessage.au3>

Local $hWnd,$flags,$regexp

Func MyExit() 
    MsgBox(0,"Drop Window","Quitting!",2) 
    Exit 0
EndFunc

$flags = BitOr($SWP_NOMOVE,$SWP_NOSIZE,$SWP_NOACTIVATE,$SWP_ASYNCWINDOWPOS,$SWP_NOSENDCHANGING) 

;; hot key to call exit: ALT + F11
HotKeySet("!{F11}","MyExit")

;; application window title
$regexp=".*Notepad$"

;; 10 second time out on first startup, 
$hWnd = WinWait("[REGEXPTITLE:" & $regexp & "]", "", 10)
;; or wait forever
;$hWnd = WinWait("[REGEXPTITLE:" & $regexp & "]")

If ($hWnd) Then
    ;; uncomment next line to maximize window first
    ;_SendMessage($hWnd,$WM_SYSCOMMAND,$SC_MAXIMIZE)

    _WinAPI_SetWindowPos($hWnd, $HWND_BOTTOM, 0, 0, 0, 0, $flags);

    While 1
        If WinWaitActive($hWnd,"",10) Then
            _WinAPI_SetWindowPos($hWnd, $HWND_BOTTOM, 0, 0, 0, 0, $flags);
        EndIf
        ;; check for new window
        $hWnd = WinWait("[REGEXPTITLE:" & $regexp & "]","",1) 

        ;; uncomment next 3 lines to quit if no window
        ;if (NOT $hWnd) Then
        ;    MyExit()
        ;EndIf

        Sleep(250)
    Wend
Else
    MsgBox(0,"Drop Window","No window title matching /" & $regexp & "/") 
EndIf

"topmost" เป็นคุณสมบัติของหน้าต่างแบบถาวรที่ WM รักษาไว้ไม่มี "ล่างสุด" เทียบเท่าดังนั้นเราจึงต้องทำให้เหลวไหลเล็กน้อย

ขณะที่ลูปรอให้แอปพลิเคชันรับส่วนหน้าจากนั้นปล่อยอีกครั้งในขณะที่ยังคงโฟกัสของแป้นพิมพ์ บางครั้งป๊อปอัปของ Modal อาจรบกวนสิ่งนี้ แต่ควรจะใช้งานได้ค่อนข้างสคริปต์จะยังคงทำงานในพื้นหลังหลังจากที่โปรแกรมที่รับชมสิ้นสุดลง Alt + F11 เพื่อออกเมื่อใดก็ได้

เปลี่ยน $ regexp เพื่อให้ตรงกับ "mIRC" หรืออะไรก็ตาม ด้านบนจะจัดการได้ครั้งละหนึ่งหน้าต่างเท่านั้น อ่านเอกสาร AutoIT สำหรับ WinWait () เพื่อดูวิธีจับคู่หน้าต่างอื่นนอกเหนือจากชื่อหน้าต่าง

บันทึกไปที่ dropwindow.au3 และเรียกใช้ด้วย "autoit3 dropwindow.au3"

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


1

หากคุณมีเครื่องคอมพิวเตอร์พร้อมกับการ์ดจอ ATI Radeon คุณอาจใช้ Hydragrid กับไดรเวอร์ ATI ล่าสุดและสาธารณูปโภคถ้าไม่WinSplit ปฏิวัติ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.