使用AppActivate更改活动窗口

时间:2015-07-30 12:16:36

标签: vbscript

我正在尝试向程序发送一些按键。我在下面有一些示例代码,直到最后{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}"

2 个答案:

答案 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)

  1. 您在最后一行使用Shell但尚未对其进行定义。将其更改为objShell
  2. 要发送Alt密钥,请使用"%"。例如:

    objShell.SendKeys "%"
    

    您通常会在组合键中使用它。例如,要在大多数程序中打开File菜单,您可以使用Alt + F或:

    objShell.SendKeys "%f"
    
  3. 如果您的窗口标题发生变化,或者您因任何原因需要激活新窗口,请再次致电AppActivate

    objShell.AppActivate "My new window title"