source

WPF 창의 핸들을 찾는 중입니다.

manysource 2023. 4. 25. 22:37

WPF 창의 핸들을 찾는 중입니다.

Windows 양식에 win1 속성이 있습니다.주 윈도우 핸들의 핸들을 반환하는 핸들입니다.

WPF 창의 핸들을 가져올 수 있는 동등한 방법이 있습니까?

인터넷에서 다음 코드를 찾았어요

IntPtr windowHandle = 
    new WindowInteropHelper(Application.Current.MainWindow).Handle;

하지만 제 응용 프로그램에 여러 개의 창이 있기 때문에 도움이 되지 않을 것 같습니다.

그냥 지나가는 게 아니라요Application.Current.MainWindow원하는 창으로 참조를 전달하기만 하면 됩니다.new WindowInteropHelper(this).Handle기타 등등입니다.

Windows에서 창을 사용하세요.InteropHelper 클래스입니다.

// ... Window myWindow = get your Window instance...
IntPtr windowHandle = new WindowInteropHelper(myWindow).Handle;

지금은 응용 프로그램의 기본 창을 요청하고 있습니다. 이 창에는 항상 창이 있습니다.그러나 시스템인 경우 모든 창에서 동일한 기술을 사용할 수 있습니다.창문들.창에서 파생된 창 클래스입니다.

다음을 사용할 수 있습니다.

Process.GetCurrentProcess().MainWindowHandle

응용 프로그램의 모든 창에 대한 핸들을 원하는 경우Window어떤 이유로든, 다음을 사용할 수 있습니다.Application.Windows모든 Windows에서 가져온 다음 사용할 속성입니다.WindowInteropHandler이미 시연하셨던 것처럼 그들의 손잡이를 잡을 수 있습니다.

제 사용 사례에서는 시작 시 기본 창에 대한 핸들이 필요했는데, 어떤 작업을 해도 창을 열 수 없었습니다.new WindowInteropHelper(...).Handle창이 아직 초기화되지 않았기 때문에 Null 핸들이 아닌 다른 것을 반환할 수 있습니다.

대신 메서드를 사용하면 핸들이 아직 없는 경우 핸들이 생성되고, 핸들이 있는 경우 현재 핸들이 반환됩니다.

var hWnd = new WindowInteropHelper(Application.Current.MainWindow).EnsureHandle();

응용 프로그램이 시작되면 문제 없이 동일한 핸들을 계속 사용합니다.

언급URL : https://stackoverflow.com/questions/1556182/finding-the-handle-to-a-wpf-window 입니다.