将 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用法
使用 Visual Studio 2015 测试 Citrix 应用程序