繁体   English   中英

如何在 Windows 中模拟输入特殊字符

[英]How to simulate entering a special character in Windows

我的最终目标是设置某种快捷方式(可能是键盘快捷方式),以输入特定的特殊字符:è。 我必须输入各种像这样的特殊字符,并且想设置一些东西,我可以在其中进行简单的键盘组合,而不是每次都查阅 Alt 代码列表。

我的第一个想法是创建一个脚本,将它的执行绑定到键盘快捷键。 我尝试使用 SendKeys 编写 PowerShell 脚本,但我无法找到一种方法让SendKeys发送 Alt 代码或我的美式键盘上尚未发送的任何内容。 我也可以批量使用 SendKeys,但遇到了同样的问题。 在 CmdLine 上运行它很接近,但只是打印数字(可能是因为它不区分数字键和小键盘键):

powershell -c "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('%(0232)')

我在想会有一个直接的方法来做到这一点,但也许不是。 有没有我没有找到的其他语言的方法? SendKeys 的替代品? 对大多数事物开放。

有一种次优方法可以让它工作(见下文),但一般来说:

  • PowerShell CLI 调用需要时间,因为启动成本很高,因此基于它的解决方案可能会导致最终用户体验不满意。

  • AutoHotkey等实用程序在击键仿真方面提供了更好的性能和功能。


如果可以覆盖剪贴板以存储所需的字符,则可以使用以下命令:

powershell -noprofile -c "Set-Clipboard é; $wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^v')"
  • PowerShell,作为一种基于 .NET 的语言,可以表示任何 Unicode 字符,并使用Set-Clipboard将其复制到剪贴板。

  • 使用.SendKeys()发送'^v' ,即 Ctrl-V 然后粘贴剪贴板中的字符。

注意:虽然您可以努力保存和恢复剪贴板 state,但这样做仅适用于简单的情况 - 请参阅此答案以获取背景信息。


至于你尝试了什么:

留下需要在批处理文件中将文字%转义为%%的潜在问题(而不是直接来自cmd.exe命令提示符):

发送字符串'%(0232)' (即,在键入0232按住 Alt不起作用,因为数字(构成您的特殊字符的十进制 Unicode 代码点è (带有坟墓的拉丁小写字母 E, U+00E8U+00E8 ); 0xe8 == 232 ) 必须在数字键盘上输入,据我所知.SendKeys()不支持。 [1]


[1] 虽然您可以通过.SendKeys()发送某些虚拟键码,但它们似乎仅限于 8 位范围内的那些( >= 128 - 请参阅此答案以获取示例),而数字键盘的数字键码在 7 位范围内 - 请参阅虚拟键代码列表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM