我正在尝试向程序发送一些按键。我在下面有一些示例代码,直到最后{Alt}
命令才能正常工作。我认为这是由于窗口名称从"Notepad1"
更改为"NotePad2"
。任何人都可以帮助我在AppActivate
命令后将"Notepad2"
路径更改为objShell.SendKeys "{Enter}"
吗?
示例:
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "Notepad.exe"
Do Until Success = True
Success = objShell.AppActivate("NotepadPathA")
Loop
objShell.SendKeys "{F1}"
objShell.SendKeys "Secure06**"
objShell.SendKeys "{Enter}"
Shell.SendKeys "{Alt}"
答案 0 :(得分:1)
每个Windows进程都有一个标识符。如果存储每个记事本窗口的进程ID,则可以避免在标题更改后找到正确的窗口。
以下是打开两个记事本文件的示例,按进程ID和发送密钥激活。
Set objShell = WScript.CreateObject("WScript.Shell")
Function SendKeysTo (process, keys, wait)
objShell.AppActivate(process.ProcessID)
objShell.SendKeys keys
WScript.Sleep wait
End Function
Set notepadA= objShell.Exec("notepad")
Set notepadB= objShell.Exec("notepad")
WScript.Sleep 500
SendKeysTo notepadA, "Hello I am Notepad A", 1000
SendKeysTo notepadB, "Hello I am Notepad B", 1000
希望你能采取类似的方法来解决你的问题。
答案 1 :(得分:1)
Shell
但尚未对其进行定义。将其更改为objShell
。要发送Alt
密钥,请使用"%"
。例如:
objShell.SendKeys "%"
您通常会在组合键中使用它。例如,要在大多数程序中打开File
菜单,您可以使用Alt
+ F
或:
objShell.SendKeys "%f"
如果您的窗口标题发生变化,或者您因任何原因需要激活新窗口,请再次致电AppActivate
:
objShell.AppActivate "My new window title"