문제

외부 앱의 창을 전경으로 가져와야 하며 반드시 포커스를 훔칠 필요는 없는 애플리케이션을 작성 중입니다. 사용자가 포커스를 훔치거나 훔치지 않도록 전환할 수 있는 설정이 있습니다.

win32 API를 사용하여 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?SetForeground()를 시도했지만 항상 포커스를 훔치고 일관되게 작동하지 않습니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?이견있는 사람?

도움이 되었습니까?

해결책

SetForegroundWindow는 포커스를 훔쳐야 하며 실패하는 특정 경우가 있습니다.

SetForegroundWindow 함수는 지정된 창을 만든 스레드를 전경에 놓고 창을 활성화합니다.키보드 입력이 창으로 전달됩니다.

초점을 맞춰보세요. SetCapture 전화를 걸기 전에.또한 창을 앞으로 가져오는 다양한 방법을 살펴보세요.SetForeGroundWindow, SetActiveWindow, 심지어 마우스 클릭 시뮬레이션도 가능합니다.

다른 팁

SetForeGroundWindow, SetActiveWindow 및 BringWindowToTop의 차이점은 무엇입니까?모두가 같은 일을 하는 것처럼 보입니다.

MSDN에 따르면 SetForeGroundWindow는 창을 활성화하고 키보드 포커스를 창으로 보냅니다.이는 프로세스가 백그라운드에 있을 때에도 작동을 시도합니다.SetActiveWindow는 SetForeGroundWindow와 동일한 작업을 수행하지만 애플리케이션이 맨 앞의 애플리케이션이 아닌 경우에는 아무 작업도 수행하지 않습니다.마지막으로 BringWindowToTop은 창을 맨 위로 가져오고 키보드 포커스는 변경하지 않습니다.

포커스를 훔치지 않으려면 BringWindowToTop 기능을 사용해 보세요.나는 그것을 사용하지 않았지만 당신이 찾고있는 것 같습니다.

SetWindowPos를 사용해 보셨나요?이는 Windows에서 z 순서 이동, 크기 조정 및 설정을 위한 표준 기능입니다.사용할 수 있는 SWP_NOACTIVATE 플래그가 있습니다.보다 http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx.다른 프로세스에 속한 창에서는 이 작업을 시도하지 않았지만 시도해 볼 가치가 있을 것입니다.

SetWindowPos + SWP_NOACTIVATE가 작업을 수행합니다.

FindWindow를 사용하여 창의 HWND를 가져온 다음 Win32 API에 있는 BringWindowToTop 함수를 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top