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

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

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

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

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

【问题讨论】:

    标签: c# sendkeys citrix


    【解决方案1】:

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

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


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

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

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

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

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

    不确定这是否适用于您。

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

    【讨论】:

    • 我已经设法排除了使用国际键盘并获得不同结果的最后一部分。我不太熟悉将配置添加到文件中,但我肯定会试一试,看看效果如何!去查找你在这里提到的所有东西! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多