WScript Sendkey不';不接受Unicode字符

WScript Sendkey不';不接受Unicode字符,unicode,vbscript,sendkeys,wsh,Unicode,Vbscript,Sendkeys,Wsh,我正在尝试使用WScript Sendkeys发送字符“ä”。它似乎不起作用。我找到一个帖子 我的代码: Set sh = WScript.CreateObject("WScript.Shell") sh.Run "notepad.exe", 9 WScript.Sleep 1000 'wait a while to load notepad app' sh.SendKeys " äää Hello World!" //buggy line sh.SendKeys "{ENTER}" WScr

我正在尝试使用WScript Sendkeys发送字符“ä”。它似乎不起作用。我找到一个帖子

我的代码:

Set sh = WScript.CreateObject("WScript.Shell")
sh.Run "notepad.exe", 9
WScript.Sleep 1000 'wait a while to load notepad app'
sh.SendKeys " äää Hello World!"  //buggy line
sh.SendKeys "{ENTER}"
WScript.Sleep 100'
sh.SendKeys "^p"
但我无法理解解决方案。如果你教我简单的代码(解决方案),那就太好了。我不擅长WScript(因为它不是我的领域)。 我知道我在乞求代码(请原谅我)。但请理解我的处境


非常感谢

评论是错误的。除了称为扫描码的键盘代码外,没有unicode或任何其他代码键盘。如果你不能在键盘上输入,那么发送键也不能。它们是击键而不是字符。其含义取决于您使用的键盘布局。使用与键盘相同的按键。如果窗口是使用CreateWindowA创建的,Windows会将其转换为ascii字符;如果窗口是使用CreateWindowW创建的,Windows会将其转换为unicode字符。

Windows脚本主机的

WSH/SendKeys的替代方案:

  • 使用免费的GUI自动化工具。您可以使用AutoIt的或命令来自动执行文本输入

    Run('notepad.exe')
    WinWaitActive("[CLASS:Notepad]", "", 10)
    ControlSend("[CLASS:Notepad]", "", "Edit1", "äää Hello World!")
    
  • 用另一种编程语言(C++、C#等)编写代码,并使用该标志调用Windows API函数


解决方案简单地说明了SendKeys因Microsoft引入Unicode的方式而受损。具体来说,您遇到了Windows窄字符集不应该是UTF-8的问题。还提到的解决方法不是使用WScript,而是直接使用本机范围的API。tonybd:-我尝试了你的建议,并将我的系统键盘布局更改为法语,它对字符“a”有效,但对字符“æç”它给了我空白。对不起,我没有特别提到你的名字