1

我正在尝试在 C#中实现 Windows 消息传递,以便将 HTML 页面与常规 exe 进行通信。我需要做的是创建一个具有特定类名和窗口名的新窗口,以便其他进程可以将 Windows 消息发送到我的 Activex 应用程序。

[DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr CreateWindowEx(
           WindowStylesEx dwExStyle,
           string lpClassName,
           string lpWindowName,
           WindowStyles dwStyle,
           int x,
           int y,
           int nWidth,
           int nHeight,
           IntPtr hWndParent,
           IntPtr hMenu,
           IntPtr hInstance,
           IntPtr lpParam);


            IntPtr temp = CreateWindowEx(0, "privateclassname", "privatewindowname",
                WindowStyles.WS_CHILD | WindowStyles.WS_VISIBLE, 0, 0, 1, 1,
                IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);

这是我一直在尝试的,但 temp 总是得到 0 而不是正确的窗口句柄。这段代码有什么问题?我怀疑hWndParent参数。A 给它 0 因为我不知道父的句柄,或者它甚至存在。提前致谢

4

1 回答 1

1

您正在为窗口样式标志传递 WS_CHILD,但您没有传递父窗口句柄(您正在传递 0/NULL)。尝试删除 WS_CHILD 样式。

另外,请参阅我关于上面调用 RegisterClass 的评论(如果适用)。

于 2013-01-09T07:50:52.810 回答