使WPF窗口位于外部应用程序窗口的顶部,而不是每个窗口的最顶部

时间:2019-03-23 10:43:28

标签: c# .net wpf winapi

我需要使用伪造的工具栏扩展外部Windows应用程序。我根本无法修改该外部应用程序。

我的假工具栏应用是WPF应用,带有WPF MainWindow,C#。

此工具栏应显示在外部应用程序窗口的顶部,而不是系统范围的顶部。

我可以使用适当的Win32 API函数或WindowInteropHelper获取外部应用程序窗口的HWND,大小,矩形等。

如果WindowFromPoint Win32 API调用不能100%看到我的应用程序窗口,我可以将其隐藏,但这不是最好的主意。

任何想法我应该如何解决?

我尝试使用SetWindowPos WIN32 API功能,但没有成功。

SetWindowPos(myapp_hwnd, externalapp_hwnd, 0, 0, 0, 0, 0x0002);

解决方法是两次致电SetWindowPos,如下所述: How to keep a window in front of another applications window

SetWindowPos(myapp_hwnd, 0, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, SWP_NOZORDER);

SetWindowPos(myapp_hwnd, GetNextWindow(extapp_hwnd, GW_HWNDPREV), 0, 0, 0, 0, 
             SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE);

0 个答案:

没有答案