将窗口附加到外部进程

本文关键字:外部 进程 窗口 | 更新日期: 2023-09-27 18:22:26

我正在用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);
     }

将窗口附加到外部进程

首先,您的p/Invoke声明是错误的。句柄由IntPtr表示,而不是Int32:

[DllImport("user32.dll", SetLastError = true)]
private static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

现在,也许您应该避免将一个窗口"附加"到另一个进程。请参阅此SO线程。