【发布时间】:2014-02-03 21:05:18
【问题描述】:
我正在尝试使用 SendMessage 方法将“粘贴”Windows 消息发送到前台窗口。它适用于大多数程序,但来自 Microsoft 的任何东西都会忽略它(尝试过 MSSQL 和各种 Office 程序)。这是我的代码:
var info = new GuiThreadInfo();
info.cbSize = Marshal.SizeOf(info);
if (!GetGUIThreadInfo(0, out info)
throw new Win32Exception();
var focus = info.hwndFocus;
SendMessage(focus, 0x0302, IntPtr.Zero, IntPtr.Zero);
我听说微软程序使用自定义控件,但我不知道该怎么做。正如我所提到的,它在其他程序(记事本、SQL Navigator)中效果很好。
编辑:嗯,我设法使用简单的 SendKeys.SendWait 方法实现了我想要的。虽然我之前确实尝试过使用它并且它不适用于所有程序,但事实证明它是区分大小写的。我发送的是“^V”,但现在我使用的是“^v”,它可以工作了!
【问题讨论】:
-
我以为记事本是微软出的...
标签: pinvoke paste sendmessage