将SendKey发送到Citrix应用程序

时间:2015-11-04 16:19:26

标签: c# sendkeys citrix

我正在尝试使用SendKey Events将上下文菜单发送到我在应用程序中的屏幕部分。该应用程序是基于Citrix的。我正在尝试使用sendkeys,因为它们在将鼠标指向特定位置时非常可靠。如果这也不可能也很有意义,那么我也会尽力追求它。

到目前为止,我已尝试使用" {+ F10}"想法,但只是在屏幕上产生值9,我尝试了很多变化,如

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

但所有这些都会导致明文被发送,像&#39; 9&#39; =&#39; =&#39;或者&#39; 0&#39; 0我在这些情况下都看到了。如果有人有任何可以欣赏的见解。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

您还可以尝试使用以下方法强制执行旧实现:&#34; JournalHook&#34;作为价值。

文件中还有一句话说:

  

如果您的应用程序适用于各种键盘的国际使用,则使用Send可能会产生不可预测的结果,应该避免使用。

不确定这是否适合您。

您可以选择的其他替代方案是docuAutoIt,可能需要花费更多时间来挖掘它。