미안 해요,하지만 당신이 요구하는 것은 (사소) 할 수 없습니다. 귀하의 응용 프로그램이 포 그라운드 응용 프로그램 (즉, 포 그라운드 윈도우를 담당하는 응용 프로그램)이 아니기 때문에 창이 위로 오지 않는 이유는 응용 프로그램이 포 그라운드 응용 프로그램이 아니기 때문입니다. manual page에서
:
는 정상에 가 SetForegroundWindow 권한이 있어야합니다 창을 소유하는 프로세스를 창을 가져을 SetWindowPos를 사용하십시오.
물론 그렇게했습니다. 그러나 반환 코드를 확인하지 않았습니다. 다음은 man page의 내용입니다.
시스템에서 전경 윈도우를 설정할 수있는 프로세스를 제한합니다. 프로세스는 다음 조건 중 하나에 해당하는 경우에만 전경 창을 설정할 수 있습니다
- 과정은 전경 과정이다.
- 프로세스는 포 그라운드 프로세스로 시작되었습니다.
- 프로세스가 마지막 입력 이벤트를 수신했습니다.
- 포 그라운드 프로세스가 없습니다.
- 프로세스가 디버깅 중입니다.
- 전경 프로세스가 현대 응용 프로그램 또는 시작 화면이 아닙니다.
- 포 그라운드가 잠겨 있지 않습니다 (LockSetForegroundWindow 참조).
- 전경 잠금 시간 제한이 만료되었습니다 (SystemParametersInfo의 SPI_GETFOREGROUNDLOCKTIMEOUT 참조).
- 메뉴가 활성화되어 있지 않습니다.
이러한 제한의 합은 모든 가능성에, 당신은 전경 창으로 창을 끌 수 없습니다, 당신은 앞으로 가져 할 수 있다는 것이다.
주위에는 여러 가지 방법이 있습니다. 포 그라운드 프로세스가 SetForegroundWindow를 호출하는지 확인할 수 있습니다. 불행히도, 그것은 귀하의 코드를 실행하지 않습니다.
한 번만 전 코드를 전경 윈도우 프로세스에 삽입하기 위해 hooks을 사용했습니다. 이것은 초보자의 속임수가 아닙니다. 당신이 그렇게하지 않으면, 당신이하려는 일을 할 수있는 방법이 없습니다.
편집자 추가 : Windows에서 수행하려는 작업을 수행하지 못하게하는 이유가 있습니다. 다른 응용 프로그램에서 포커스를 훔치면 사용자의 UI 경험이 매우 떨어집니다. 님께 서 무엇을 하려는지을 원하시는 지 다시 생각해보십시오.
'SetForegroundWindow'의 제한 일 수 있습니까? 즉, 작업 표시 줄 항목이 대신 깜박입니까? –
예, 깜박이지만 극복 방법은 무엇입니까? –
사용자가 창을 Z 순서의 맨 위에두기를 원하면 창으로 전환합니다. 프로그래머는 바탕 화면의 모든 창을 정렬하는 것이 아니라 응용 프로그램 내에서 * 창 정렬 만 제어합니다. –