wshshell.sendkeys,第一个字符无法发送
时间: 2023-07-16 08:15:35 浏览: 58
如果你在使用 `WshShell.SendKeys` 方法时遇到第一个字符无法发送的问题,可能是因为发送前需要确保焦点在正确的窗口上。你可以尝试在发送前使用 `AppActivate` 方法,将目标应用程序的窗口激活并将焦点设置到该窗口上,然后再发送按键。
以下是一个示例代码:
```vb
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "Untitled - Notepad" ' 将 Notepad 窗口激活
WshShell.SendKeys "Hello, world!"
```
在上面的示例中,我们使用了 `AppActivate` 方法将 Notepad 窗口激活,然后再使用 `SendKeys` 方法向该窗口发送按键。这样就可以确保第一个字符能够被正确地发送。
相关问题
wshshell.sendkeys,只有第一个字符无法发送,其他字符可以正常发送
可能是因为你需要在发送前添加一个小延迟,等待程序能够正确地获取焦点。你可以在发送前使用 WScript.Sleep 函数,例如:
```
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "Notepad"
WScript.Sleep 100
WshShell.SendKeys "Hello, world!"
```
这样发送的第一个字符也应该能够正常发送了。如果问题依然存在,你可以尝试使用 SendInput 函数来模拟键盘输入。
Set WshShell = CreateObject("WScript.Shell") WshShell.Run "QY.bat", 1, False WScript.Sleep 1000 WshShell.SendKeys "My" WScript.Sleep 1000 WshShell.SendKeys "+" WshShell.SendKeys "23" WshShell.SendKeys "{enter}" @echo off runas /u:MMXNY %cd%\360entclientmigrate.exe合并以上代码
根据您提供的代码,您正在尝试使用 VBS BAT 文件进行一些操作,并执行一个名为 "360entclientmigrate.exe" 的程序。以下是合并后的代码:
```vbscript
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "QY.bat", 1, False
WScript.Sleep 1000
WshShell.SendKeys "My"
WScript.Sleep 1000
WshShell.SendKeys "+"
WshShell.SendKeys "23"
WshShell.SendKeys "{enter}"
WshShell.Run "cmd.exe /c runas /user:MMXNY %cd%\360entclientmigrate.exe", 1, False
```
请确保将上述代码保存为一个扩展名为 .vbs 的文件,然后运行该文件。它将首先执行 QY.bat 文件,然后模拟键盘输入 "My+23" 并按下回车键,最后以管理员身份运行 "360entclientmigrate.exe" 程序。
请注意,由于涉及到运行命令和模拟键盘输入,这种方法可能会受到一些安全限制。在实际使用中,请确保脚本和程序的来源可信,并遵循系统和网络策略。