2011-09-15 6 views
1

나는 다른 모든 것 위에 표시하고 싶은 창을 가지고 있습니다. 내 코드는 성공적으로 다른 모든 최상위 창을 제외하고 거의 모든 창 위에 있어야합니다. 여기에 내가 코드를 사용한다 :창은 이미 작업 관리자와 같이 맨 위에있는 창 위에 있어야합니다.

SetWindowPos(getSDLWindow(),HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE); 

이 줄은 내가 마우스 가운데 버튼을 클릭 할 때마다 (나는 그것을 발사 마우스 훅을 사용하고 있습니다) 실행됩니다.

일단 프로그램을 시작하고 그 지점에서 한 번 마우스 가운데 버튼을 클릭하면 내 창은 모든 "일반"창 위에 유지됩니다.

그러나 모든 '특수 창'은 내 애플리케이션 창과 동일한 카테고리에있는 것처럼 보입니다. 즉, 포커스가있는 경우 특수 창이 내 애플리케이션 창 위에 표시됩니다. 이 특수 창 범주에는 작업 표시 줄 (시작 메뉴를 사용하여 활성화 된 것처럼 보임), 마우스 오른쪽 버튼으로 클릭하는 메뉴 (일반 창에 의해 생성되는 경우에도), 작업 관리자 및 기타 여러 가지가 있습니다. 실제로 나는 "최상위"인 다른 윈도우가 이런 식으로 행동 할 것이라는 것을 확실히 확신합니다. 내 SetWindowPos 전화를 통해 내 응용 프로그램 창의 상태를 최상위 창으로 올린 것으로 보입니다.

깔끔한 점은 작업 관리자를 시작하여 내 응용 프로그램 창 위로 옮겨서 (이제는 덮어 쓰도록) 작업 관리자 내부를 마우스 가운데 버튼으로 클릭하면 이제는 내 응용 프로그램 창이 다시 팝업됩니다. (포커스가 작업 관리자에 남아있는 동안). 이것은 좋지만 한 걸음 더 나아가 내 창의가 올라갈 수 있도록 에 상관없이 한 걸음 더 나아가고 싶습니다.

루프에서 반복적으로 SetWindowPos을 실행하는 것 이외의 다른 방법이 있습니까? 가능하다면 나는 그것을 피하고 싶습니다.

+7

그렇게하지 마십시오. 사용자가 당신을 미워할 것입니다. –

+0

글쎄, 커다란 표지판과 거대한 체크 박스가있어 사용자가 끌 수있게 해줄 것이다. 나는 무엇인가를 알아낼 것이다. 알다시피, 실제로 마우스를 추적하고 내 앱 창을 이동 (및 크기 조정)하려는 ** ** 커서 밖으로. 중요한 정보를 표시하기 만하면됩니다. –

+0

포르노/도박/변호사/바이러스 사이트의 팝업 창이 작업 관리자에 대한 액세스없이 절대적으로 최상위가 될 수있는 방법이 필요하십니까? 당신이 원하는 것을 할 수있는 길을 찾았다 고해도, M $는 '중요 보안'업데이트를 서두르 자마자 차단합니다. –

답변

8
+0

젠장, 저를 때려. 나는 똑같은 링크를 게시하려고했다 :) +1. –

+6

나는이 인용문을 매우 좋아한다. "때때로 나는 서둘러야한다. 나는 델리 카운터에서 다음 사람을 만날 수 있기를 바란다. 번호를 쳐서 의식을 잃고 표를 훔치기도하지만 때로는 다른 사람이 와서 서두르는 사람도 있는데 그 사람은 나를 무의식에 빠뜨리고 내 티켓을 훔칩니다. 내 계획은 시계 알람을 설정하여 주기적으로 깨우쳐줍니다. 그것은 나를 깨우고, 가장 적은 숫자의 사람을 발견하고, 의식을 잃고, 티켓을 훔칩니다. 더 좋은 방법이 있습니까? ""좋습니다. :) –

관련 문제