【发布时间】:2010-02-26 20:51:35
【问题描述】:
我正在使用 RegisterHotKey Win32 API 来监听 Ctrl_V 组合键并使用 WndProc 方法来处理此热键通知。现在,即使除了调用 base.WndProc(ref mesg) 之外我没有在此方法中执行任何操作,粘贴操作似乎也没有传递到 Windows 上,因此粘贴不起作用。我设法通过显式调用 SendKeys("^V") 来粘贴文本,但它不适用于非文本数据。我还尝试了 SendMessage Win32 API,如下所示
SendMessage(foregroundWindowHandle, 0x302, 0, 0);
但即使这样也行不通。
我无法弄清楚如何执行我的代码,然后让 Windows 执行图像、文件等的粘贴。解决此问题的任何帮助都将非常及时和高度赞赏。
更新:我发现问题在于生成粘贴命令的窗口没有重新获得焦点。更正此问题后,Paste 在记事本上运行良好。另外,我现在使用 Alt_Shift_V 作为热键以避免与默认粘贴命令发生冲突。所以粘贴非文本数据可以正常工作。但是,无法将文本粘贴到 Visual Studio 和 Office 应用程序中。 SendKeys("^V") 在这些应用程序中似乎以不同的方式解释。知道如何让它发挥作用吗?
【问题讨论】:
-
你在粘贴什么?也许前台窗口只接受文本?
-
我不完全是在粘贴,我只是想将粘贴命令传递给最初生成它的窗口。对于图像,我尝试过使用 Explorer 和 MS Paint。我也尝试在 Windows 资源管理器中复制粘贴文件,但没有成功