0

我的 WinForm 对话框通过调用SetParent(p/invoke) 附加到第 3 方窗口 (SolidWorks)。我的对话作为加载项在第 3 方进程中。

当我的用户通过单击它给我的对话框/小部件焦点时,如果他们然后按Ctrl+Tab键切换父应用程序中的视图,我的对话框会收到击键序列 - 我可以通过覆盖ProcessCmdKey. 该命令不会传递给父窗口,因此什么也不做。

如何将此键序列传递给父 HWND?

这不仅仅是Ctrl+Tab我需要转发,它是所有的关键,包括Alt+ F4F1等等等等。

4

1 回答 1

0

用于FindWindow获取父窗口的句柄。(为 lpClassName 传递 null)(更多信息:http ://www.pinvoke.net/default.aspx/user32.FindWindow )

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

使用转发捕获的消息SendMessageW(更多信息:http ://www.pinvoke.net/default.aspx/user32.SendMessage )

// Works for unicode. One can also 
// use CharSet = CharSet.Unicode instead of [MarshalAs(UnmanagedType.LPWStr)] 
[DllImport("user32.dll", EntryPoint = "SendMessageW")]
static extern IntPtr SendMessageW(IntPtr hWnd, 
                                  UInt32 Msg, 
                                  IntPtr wParam, 
[MarshalAs(UnmanagedType.LPWStr)] string lParam);
于 2012-09-06T06:41:37.333 回答