我正在用C#编写一个应用程序,它需要将自己的一个窗口附加到另一个进程拥有的窗口。我尝试使用windows api中的SetParent函数,但它似乎不起作用。有没有办法做到这一点?
[DllImport("user32.dll", SetLastError = true)]
private static extern int SetParent(int hWndChild, int hWndNewParent);
private void AttachWindow(int newParent) {
SetParent(this.Handle, newParent);
}
答案 0 :(得分:2)
首先,你的P / Invoke声明是错误的。句柄由IntPtr
表示,而不是Int32
:
[DllImport("user32.dll", SetLastError = true)]
private static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
现在也许你应该避免将一个窗口“附加”到另一个进程。请参阅this SO thread。