将 SendKey 发送到 Citrix 应用程序

Posted

技术标签:

【中文标题】将 SendKey 发送到 Citrix 应用程序【英文标题】:Sending a SendKey to a Citrix application 【发布时间】:2015-11-04 16:19:25 【问题描述】:

我正在尝试使用 SendKey 事件将上下文菜单发送到我在应用程序中所在的屏幕部分。该应用程序是基于 citrix 的。我正在尝试使用 sendkeys,因为它们在将鼠标指向特定位置时非常可靠。如果这不可能,那也很高兴知道,同时我会尽我所能去追求它。

到目前为止,我已经尝试过使用“+F10”的想法,但这只会在屏幕上产生值 9,而且我已经尝试了很多变体,比如

"<=F10>=" to simulate pressing shift up and down
"+=F10"
"++F10"
"+F10""s"
"+F10s"

但所有这些都会导致发送纯文本,在这些情况下我只看到像 '9'、'=' 或 '0' 这样的值。如果有人有任何见解,将不胜感激。

【问题讨论】:

【参考方案1】:

SendKeys.SendWait("+F10"); 应该是按 shift + F10 的正确语法。 如果你想按 [shift + F10 + s] SendKeys.SendWait("+(F10s)"); 是你的朋友。

正如here 所述,Windows Input Simulator 对于基于 Citrix 的系统比 SendKeys 更可靠。你应该试一试。


SendKeys 的附加组件: 根据docu SendKeys 有一个旧版本和一个新版本可用。请尝试两者,因为它可能会有所帮助。 SendKeys 默认使用旧版本,但如果失败,则回退是新版本。 要强制执行新版本,请将以下内容添加到您的 app.config:

<appSettings>
<add key="SendKeys" value="SendInput"/>
</appSettings>

您也可以尝试通过使用:“JournalHook”作为值来强制执行旧实现。

文档中有进一步的评论说:

如果您的应用程序旨在通过各种键盘在国际上使用,则使用 Send 可能会产生不可预知的结果,应避免使用。

不确定这是否适用于您。

您可以选择的其他选择是 AutoIt 或 UIAutomation,可能需要更多时间来研究它。

【讨论】:

我已经设法排除了使用国际键盘并获得不同结果的最后一部分。我不太熟悉将配置添加到文件中,但我肯定会试一试,看看效果如何!去查找你在这里提到的所有东西! :)

以上是关于将 SendKey 发送到 Citrix 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

C# 模拟键盘操作SendKey(),SendKeys() / C# SendKeys用法

Citrix Xenapp - 发送密钥

向 citrix 客户端驱动程序发送消息

使用 Visual Studio 2015 测试 Citrix 应用程序

citrix VPN登录是提示 无法连接到xenapp服务器SSL错误70:服务器发送了一个已过期的安全证书

CANoe DLL编程——SendKey DLL的CANoe应用