有没有一种方法可以触发粘贴(ctrl + v)事件到任何应用程序?

时间:2009-06-23 12:37:03

标签: visual-studio delphi citrix

我有一个代码通过发送ctrl + v(见下文)触发PASTING到任何第三方应用程序,但这似乎不适用于CITRIX。是否有任何其他方法来触发ctrl + v而不是keyb模拟?

keybd_event(VK_CONTROL, Lo(MapVirtualKey(VK_CONTROL,0)), 0,0);
keybd_event(86, Lo(MapVirtualKey(86,0)), 0,0);
keybd_event(86, Lo(MapVirtualKey(86,0)), KEYEVENTF_KEYUP,0);

4 个答案:

答案 0 :(得分:3)

也许,您可以向应用程序发送WM_PASTE消息吗?

答案 1 :(得分:1)

啊,Citrix的好问题!

  1. 我会首先检查接收应用程序端是否确实在剪贴板中有某些内容。尝试在那里手动粘贴。如果它是空的,则不是自动/键盘挂钩问题。
  2. 如果剪贴板内容确实可用,我会尝试不同的方式与接收应用程序通信:发送Windows消息(WM_PASTE,还有其他人,如果没有看到是否可以通过),还要查看是否你可以做DDE。

答案 2 :(得分:0)

您可以尝试PostKeyEx32

我用葡萄牙语写了一篇文章,但你可以阅读代码,很简单。

http://www.cesarromero.com.br/simulando-keypress-com-postkeyex32/

您可以像这样发送CTRL + Vm:

PostKeyEx32(Ord('V'), [ssCtrl], False); 

答案 3 :(得分:0)

我认为这里的批评声明是 - 与CITRIX。

我与citrix应用程序进行内部通信的经验是,许多在普通桌面上正常工作的东西在Citrix环境中运行时会失败。我会首先尝试发送一个WM_PASTE消息,如Gamecat建议的那样,如果失败,您可能希望确保您的客户端通过Citrix桌面运行您的应用程序,而不是直接从桌面上的快捷方式运行应用程序。从外部快捷方式启动Citrix应用程序时,它会获得与从Citrix桌面上的内部快捷方式启动时不同的会话。