창을 항상 다른 사람 아래에 유지하는 Windows 7 기능 또는 프리웨어


8

GridMove 및 XNeat와 같은 일부 프로그램에서는 "Always On Top"명령을 사용하여 지정된 창을 다른 창 위에 유지할 수 있습니다. 다른 모든 창을 "Always On Top"으로 설정하는 것을 제외하고 Windows 7 명령 또는 프리웨어와 함께 "Always At The Bottom"을 반대로 수행하는 방법이 있습니까?

대화 프로그램의 나머지 UI가 공간을 어지럽히 지 않고 창의 간격을 통해 최신 메시지와 텍스트 입력 필드 만 보이는 채로 모든 대화창 아래에 대화 프로그램을 입력하는 것이 유용 할 때가 있습니다.


1
아니요, Win32 라이브러리에는 프로그래머가 응용 프로그램을 백그라운드로 강제로 실행할 수있는 기본 제공 기능이 없습니다. 더 논리적으로 다른 응용 프로그램에 가도록 지시하고 foreground있습니다.
Ramhound

대안으로 투명도를 변경하여 해당 창을 볼 수 있습니다 (많은 도구 가이 작업을 수행 할 수 있음). 또는 오토 핫키를 사용하여 트레이로 최소화 할 수 있습니다. (만약 목적을 죽이지 않으면 :-))
Ankit

1
Win32가이를 기본적으로 지원하지 않더라도 특정 창을 특정 시점에 배경으로 보낼 수 있습니다. 그래도 초점을 유지하는지 모르겠습니다. 아마도 포커스를 잃는 즉시 자동으로 창을 뒤쪽으로 보내는 방법을 찾을 수 있습니다. 또 다른 대안은 창을 타일링하여 z- 인덱스에 대해 걱정하지 않아도
된다는 것입니다

답변:


1

오래 전에 Windows에는 X-Mouse라는 PowerToy (나중에 TweakUI)가 있었는데, 그 중에서도 "포커스"와 "전경"이 같은 것이 아닌 구식 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

"맨 위"는 WM이 유지하는 지속적인 창 속성으로, "맨 아래"와 같은 것이 없으므로 조금 퍼지해야합니다.

While 루프는 응용 프로그램이 포 그라운드를 얻을 때까지 기다린 다음 키보드 포커스를 유지하면서 다시 떨어 뜨립니다. 모달 팝업은 때때로 이것을 방해 할 수 있지만 꽤 사용 가능해야합니다. 감시 된 프로그램이 종료 된 후에도 스크립트는 백그라운드에서 계속 실행됩니다. 언제든지 종료하려면 Alt + F11을 누르십시오.

"mIRC"또는 기타와 일치하도록 $ regexp를 변경하십시오. 위의 내용은 한 번에 하나의 창만 안정적으로 처리합니다. 창 제목 이외의 창을 일치시키는 방법을 보려면 WinWait ()에 대한 AutoIT 문서를 읽으십시오.

dropwindow.au3에 저장하고 "autoit3 dropwindow.au3"로 실행하십시오.

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


1

ATI Radeon 그래픽 카드가 장착 된 PC를 사용하는 경우 Winsplit Revolution 이 아닌 경우 최신 ATI 드라이버 및 유틸리티와 함께 ​​HydraGrid를 사용할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.