我使用Microsoft Visual C ++ 2010和Windows 7。 有一个程序,其中包含带文本框的窗口。 文本框(和其他控件元素)不是编辑或GDI中的任何其他类窗口,因此程序自行呈现和处理它。 问题是:如何将剪贴板粘贴到它上面?
首先,我尝试使用WM_PASTE
PostMessage()
。它根本不起作用。应用程序可能无法处理WM_PASTE
消息。
其次,我尝试使用PostMessage()
发送4条消息:两条WM_KEYDOWN
条消息包含VK_CONTROL
和V
以及两条WM_KEYUP
条消息。它导致在文本框中打印“V”。不幸的是,WM_CHAR
与WM_KEYDOWN
后生成V
。
接下来,我挂钩PeekMessageW()
函数来控制程序消息循环。在那里,我返回了四条模拟消息:两个WM_KEYDOWN
和两个WM_KEYUP
。不行。在调试器中尝试了notepad.exe
上的这个hack。也行不通。
接下来,我使用WM_CHAR
发送0x16
来模拟 Ctrl + V 消息。适用于其他窗口,无法在应用程序窗口中使用。
我怎样才能让它发挥作用?我可以将我的代码加载到此进程并在需要时挂钩。剪贴板粘贴处理的位置和时间?
不,我不能使用SendInput()
或keybd_event()
。就是不行。窗口未激活,未连接到直接键盘输入。