c# - 예제 - user32 dll 함수
Win32 API를 사용하여 C#에서 윈도우 가져 오기 (4)
필자는 외부 앱의 창을 포어 그라운드로 가져와야하고 포커스를 훔칠 필요가없는 애플리케이션을 작성 중입니다 (사용자가 포커스를 훔치거나 훔치기 위해 전환 할 수있는 설정이 있음).
win32 API를 사용하여이 문제를 해결하는 가장 좋은 방법은 무엇입니까? SetForeground () 시도했지만 포커스를 훔치는 및 consistenly 작동하지 않습니다.
이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 이견있는 사람?
SetForeGroundWindow, SetActiveWindow 및 BringWindowToTop의 차이점은 무엇입니까? 마치 모두 똑같은 것처럼 보입니다.
MSDN에 따르면 SetForeGroundWindow는 창을 활성화하고 키보드 포커스를 직접 활성화합니다. 이것은 프로세스가 백그라운드에서 작동 할 때에도 시도합니다. SetActiveWindow는 SetForeGroundWindow와 동일한 작업을 수행하지만 응용 프로그램이 맨 앞에있는 응용 프로그램이 아닌 경우에는 아무 작업도 수행하지 않습니다. 마지막으로 BringWindowToTop은 창을 맨 위로 가져오고 키보드 포커스를 변경하지 않습니다.
FindWindow를 사용하여 윈도우의 HWND를 가져온 다음 Win32 API에있는 BringWindowToTop 함수를 사용할 수 있습니다.
SetWindowPos + SWP_NOACTIVATE가 작업을 수행합니다.
SetWindowPos를 사용해 보셨습니까? 이것은 Windows에서 z- 순서를 이동, 크기 조정 및 설정하기위한 표준 기능입니다. 사용할 수있는 SWP_NOACTIVATE 플래그가 있습니다. http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx 를 참조 http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx . 나는 다른 프로세스에 속하는 창에서 이것을 시도하지는 않았지만 아마도 시도해 볼 가치가있다.