我一直在尝试(资源有限)使用 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 设置,允许在终端字段中接收发送键,而不仅仅是工具栏菜单。
和以前一样,感谢任何帮助....我正在慢慢为这个发疯!
干杯!