我试图发送"粘贴" Windows使用SendMessage方法向前台窗口发送消息。它适用于大多数程序,但是来自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);
我听说微软程序使用自定制控件,但我不知道该怎么做。正如我所提到的,它在其他程序(Notepad,SQL Navigator)中运行良好。
编辑:我设法使用简单的SendKeys.SendWait方法实现了我想要的目标。虽然我之前尝试过使用它并且它并没有在所有程序中运行,但事实证明它是区分大小写的。我正在发送" ^ V",但现在我正在使用" ^ v"它有效!答案 0 :(得分:1)
并非所有程序都会响应WM_PASTE
消息的那种方式。程序没有理由这样做。一些程序只是偶然的事情。如果应用程序使用标准的窗口编辑控件,那么您可能会成功。但是许多GUI框架没有单独的窗口控件,只是忽略您发送的消息。
您应该使用支持的方式自动执行其他程序,而不是采用您的方法,UIAutomation。