我需要使用伪造的工具栏扩展外部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);