使用PostMessage()和/或挂钩发送剪贴板粘贴

时间:2016-07-28 21:13:10

标签: c++ windows winapi clipboard

我使用Microsoft Visual C ++ 2010和Windows 7。 有一个程序,其中包含带文本框的窗口。 文本框(和其他控件元素)不是编辑或GDI中的任何其他类窗口,因此程序自行呈现和处理它。 问题是:如何将剪贴板粘贴到它上面?

首先,我尝试使用WM_PASTE PostMessage()。它根本不起作用。应用程序可能无法处理WM_PASTE消息。

其次,我尝试使用PostMessage()发送4条消息:两条WM_KEYDOWN条消息包含VK_CONTROLV以及两条WM_KEYUP条消息。它导致在文本框中打印“V”。不幸的是,WM_CHARWM_KEYDOWN后生成V

接下来,我挂钩PeekMessageW()函数来控制程序消息循环。在那里,我返回了四条模拟消息:两个WM_KEYDOWN和两个WM_KEYUP。不行。在调试器中尝试了notepad.exe上的这个hack。也行不通。

接下来,我使用WM_CHAR发送0x16来模拟 Ctrl + V 消息。适用于其他窗口,无法在应用程序窗口中使用。

我怎样才能让它发挥作用?我可以将我的代码加载到此进程并在需要时挂钩。剪贴板粘贴处理的位置和时间?

不,我不能使用SendInput()keybd_event()。就是不行。窗口未激活,未连接到直接键盘输入。

0 个答案:

没有答案