1

我一直在尝试(资源有限)使用 VBScript 和 VBA 命令将键盘功能发送到远程 citrix 终端。- 正如我发现的那样,这是一个已知的限制,我发现各种文章通过 C++ 和扫描码提供了一种替代方法来克服限制。

主要问题是,我无法访问 C++。

  • 是否有解决方案允许使用 VBScripts 和/或 VBA?

我考虑了很多选择,包括使用 Windows 虚拟键盘(这不起作用)和在 Windows 中安装虚拟键盘驱动程序(远远超出我的深度)。

这是使用 C++ 讨论扫描码的文章之一:

http://www.codeproject.com/Tips/310817/SendKeys-using-ScanCodes-to-Citrix

我很茫然,任何可以提供帮助的人都会成为超级英雄……如果超级英雄的主要诉求是成为极客之神。:)

任何帮助表示赞赏!

干杯。

****更新****

你好,

我已经做了更多的挖掘......

...Citrix ICA 客户端终端窗口未收到 VBScript sendkeys 命令,但如果我在执行脚本后手动按终端中的 alt(暂停 2 秒),例如:

*Set objShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 2000
objShell.SendKeys ("e")
objShell.SendKeys "(P)"*

以上可以访问终端窗口内工具栏上的“文件”、“编辑”等菜单选项。

这对我来说表明该问题不是特权问题,我认为 sendkeys 方法可能还有希望?

进一步研究后,Citrix 网站上有一些关于 Citrix ICA 客户端的文档 re:ini 文件设置。

其中一篇文章可以在下面找到:

http://support.citrix.com/article/CTX129166

我玩过,似乎确实有一些 ini 文件列出了键盘映射、DLL 文件、虚拟键直通?

“模块” ini 文件的部分之一包含以下内容:

[KeyboardLayout]
(User Profile)=0x00000000
(Server Default)=0xFFFFFFFF

还有其他代码,包括各种语言,英国,美国国际等。

然后是 DLL 代码列表,例如:

kbduk.dll=0x00000809

最后,语言 ID,例如:

eng=0x00000809

我猜测(希望)有一种方法可以修改 ini 设置,允许在终端字段中接收发送键,而不仅仅是工具栏菜单。

和以前一样,感谢任何帮助....我正在慢慢为这个发疯!

干杯!

4

1 回答 1

1

子弹头解决方案

需要什么:

屏幕键盘 (OSK.EXE) windows 应用程序 VBScript(不是必需的,但我喜欢作为控制脚本) VBA(移动鼠标)

  1. 设置 OSK 以接收“悬停”命令
  2. 设置 VBA 代码以将鼠标移动到特定坐标
  3. 使用 VBScript 来控制 VBA XLS 文件中的特定子程序何时运行。- 这可以设置为在后台运行,无需手动打开文件等。
  4. 将 Citrix Xenapp 终端设置为活动窗口,按键应该发送!

大家干杯!

于 2014-10-09T09:58:56.953 回答