VBS скрипт с sendkeys (ошибка)

У меня есть небольшой скрипт, который фокусирует открытую программу (Блокнот), а затем ждет секунду, прежде чем отправить программе функцию CTRL S, Этот сценарий работает 50% времени, в то время как в остальное время он делает ошибку и фактически отправляет заглавную букву S прямо в файл.txt, который я редактирую, а не отправляю CTRL S (это команда для сохранения).

Ниже приводится содержание сценария:

' Create WScript Shell Object to access filesystem.
Set WshShell = WScript.CreateObject("WScript.Shell")

' Select, or bring Focus to a window named `NOTEPAD`
WshShell.AppActivate "Notepad"

WScript.Sleep 1000

WshShell.SendKeys "^s"

Может кто-нибудь сказать мне, как эта ошибка происходит? Я подумал, что, возможно, это потому, что у меня был CAPSLOCK, но это не так.

Под управлением Windows & 64 бит.

1 ответ

Решение

Хорошо, итак. Я знаю, что эта крайняя хакерская атака не имеет никакого смысла, но она каждый раз срабатывает для меня, так что вы, вероятно, должны попробовать это:

' Create WScript Shell Object to access filesystem.
Set WshShell = WScript.CreateObject("WScript.Shell")

' Select, or bring Focus to a window named `NOTEPAD`
WshShell.AppActivate "Notepad"
WScript.Sleep 1500
' Minimize
WshShell.SendKeys "% n"
WshShell.AppActivate "Notepad"
WScript.Sleep 1500
' Maximize
WshShell.SendKeys "% x"
WshShell.AppActivate "Notepad"
WScript.Sleep 1500
' Restore
WshShell.SendKeys "% r"
WshShell.AppActivate "Notepad"
WScript.Sleep 1500
' MAGIC!
WshShell.SendKeys "^s"
Другие вопросы по тегам