2016-08-31 11 views
2

내 창에 '항상 맨 위'확장 스타일 세트가있는 경우 '항상 위'스타일 세트가없는 모든 창과 '항상 위'스타일을 가진 창 위에 있어야합니다. 스타일이 설정되었지만 내 창이 활성화되기 전에 활성화되었습니다.작업 관리자는 Windows 10의 'Always on Top'창의 특별한 종류입니까?

이 기능을 테스트하기 위해 작업 관리자 창이 열립니다. 항상 맨 위에 놓은 다음 내 창 (myWindow)을 엽니 다.

Windows 7에서 나는 예상 된 동작을 관찰합니다. myWindow이 작업 관리자 맨 위에옵니다.

그러나 Windows 10에서는 그렇지 않습니다. 작업 관리자는 '항상 맨 위에'스타일 세트가 있더라도 다른 창의 가장 위에 위치합니다.

Windows 10에서 작업 관리자로 수행하는 특별한 기능이 있습니까? 그렇다면 작업 관리자 맨 위에 내 창을 가져 오는 작업이 있습니까? 단순히 BringWindowToTop 함수를 사용하여 시도했지만 작동하지 않습니다. setWindowPosHWND_TOPhWndInsertAfter 인수의 값으로도 표시되지 않습니다. 나는 얼마 전에 한 작은 연구에서

+0

'항상 상단에'확장 스타일을 설정하고 내가 한 수 다른 창 위에 어떤 창이 마지막으로 활성화되었는지에 따라 – TheBlueNotebook

+1

예, 작업 관리자는 특별합니다. 당신은 그것의 위에있을 수 없습니다. –

+1

논리적 도약 : [두 프로그램에서 수행 한 경우는 어떻게됩니까?] (https://blogs.msdn.microsoft.com/oldnewthing/20050607-00/?p=35413) ([Practical exam] (https : // blogs.msdn.microsoft.com/oldnewthing/20101125-00/?p=12203)). 그 생각 실험 (및 실용적인 시험)이 당신을 설득하지 못했다면, 당신이 창조하려고하는 딜레마에 대한 또 다른 모습이 있습니다 : [어떻게 다른 맨 위 창에 의해 결코 커버되지 않는 맨 위 창을 만들 수 있습니까?] (https :// /blogs.msdn.microsoft.com/oldnewthing/20110310-00/?p=11253). – IInspectable

답변

7

Windows 8의 작업 관리자에는 많은 변경 사항이있었습니다. 변경 사항 중에는 항상 다른 모든 항상 켜기 상태에 있어야한다는 특별한 경우 코드가 있다는 것은 놀랍지 않습니다. 상단 창. Microsoft는 작업 관리자가 운영 체제의 기본 제공 부분이기 때문에이를 통해 계약 상 보증을 위반하지 않습니다. OS 구성 요소와 마찬가지로 자유롭게 할 수 있습니다.

실제 질문에 대답하려면 문서화 된 API가 없습니다. WS_EX_TOPMOST이 가장 좋습니다. 그것은 사용자를위한 원조로, 망막에서 앱의 창을 에칭하는 방법이 아닙니다.

두 개의 다른 창에이 스타일 집합이있는 경우 동작은 구현에 따라 다릅니다. 당신이 얻을 수있는 유일한 보장은 WS_EX_TOPMOST 스타일의 창은 항상 다른 창 상단에 있으며,이 스타일은 Z 순서가 아닙니다. 시스템은 가장 최근에 활성화 된 최상위 창을 맨 위에 유지하거나, 시스템 구성 요소에 속한 창을 맨 위에 표시하거나, 두 개 이상의 창을 포함하는 프로세스를 처벌하는 등의 방법으로 충돌을 해결할 수 있습니다. 이 스타일은 창을 "최상위"스택의 맨 아래로 강제 이동시킴으로써 가능합니다.

관련 독서 : 나는 두 개의 창을 만들어

4

:

  • 작업 관리자는 참으로 맨 앞면의 "특별한 종류"입니다.
  • 작업 관리자 창은 문서화되지 않은 다음 기능을 사용하여 만들어졌습니다 : CreateWindowInBand.
  • 다른 프로세스에서이 함수를 사용하면 ERROR_ACCESS_DENIED이됩니다. 아마도 서명 된 Microsoft 프로세스 만 사용할 수 있습니다.
+0

특정 창을 맨 위에 "특수한 종류"로 지정하면 창 핸들을 사용할 수있는 방법을 알 수 있습니다. 아마도'CreateWindowInBand'를 사용하여 작업 관리자를 만들었다는 결론에 도달했을 때 여기에 몇 가지 힌트를 줄 수 있습니까? – TheBlueNotebook

+1

@TheBlueNotebook는'USER32.GetWindowBand'를 시도합니다. – Paul

관련 문제