0

我有一个代码可以通过发送 ctrl+v 触发 PASTING 到任何 3rd 方应用程序(见下文),但这似乎不适用于 CITRIX。除了 keyb 模拟之外,还有其他方法可以触发 ctrl+v 吗?

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

4 回答 4

3

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

于 2009-06-23T12:54:00.870 回答
1

啊,Citrix 的好问题!

  1. 我将首先在接收应用程序端检查您实际上在剪贴板中有什么东西。尝试在那里手动粘贴。如果它为空,则不是自动化/键盘挂钩问题。
  2. 如果剪贴板内容确实可用,那么我会尝试不同的方式与接收应用程序进行通信:发送 windows 消息(WM_PASTE,以及其他在失败的情况下,看看是否可以通过),但也看看你是否可以做DDE。
于 2009-06-23T17:53:25.867 回答
0

我认为这里的关键声明是 -- 与 CITRIX。

我与 citrix 应用程序相互通信的经验是,许多在普通桌面上运行良好的东西在 citrix 环境中运行时会失败。我会首先尝试按照 Gamecat 的建议发送 WM_PASTE 消息,如果失败,您可能需要确保您的客户端通过 citrix 桌面运行您的应用程序,而不是直接从桌面上的快捷方式运行应用程序。从外部快捷方式启动 citrix 应用程序时,它获得的会话与从 citrix 桌面上的内部快捷方式启动时不同。

于 2009-06-23T16:20:45.240 回答
0

你可以试试PostKeyEx32

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

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

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

PostKeyEx32(Ord('V'), [ssCtrl], False); 
于 2009-06-23T15:09:04.653 回答