是否可以在Winforms窗口中抢夺并托管win32 hwnd控件?

我在网上进行了搜索,但他们正在讨论如何为WPF做这个。

想象一下如下所示的win32应用程序,并假设应用程序本身允许创建新的Windows窗体窗口作为子窗口。 所以他们可以互相交谈,我可以发送按键,并控制父应用程序。

我想要做的是剥离图像中列出的列表视图并将其托管在我的Winforms窗口中。 所以它在我的Winforms窗口中托管在浮动顶部,并在我的Winforms窗口移动时移动控件。

我可以从父应用程序的.NET API获取hWnd句柄,但我不确定我想要的是否可行。 如果是这样,怎么样?

在此处输入图像描述

除了不同的应用程序角度,您可以使用NativeWindow类在WinForms内部托管Win32窗口。

如果您使用SetParent函数,它就像您期望的那样工作:

http://www.pinvoke.net/default.aspx/user32.setparent

您可能必须使用MoveWindow函数将控件移动到Winforms窗口中的适当位置,并可能调整它的大小:

http://www.pinvoke.net/default.aspx/user32.movewindow