使用AppActivate更改活动窗口

【使用AppActivate更改活动窗口】上下观古今,起伏千万途。这篇文章主要讲述使用AppActivate更改活动窗口相关的知识,希望能为你提供帮助。
我正在尝试向程序发送一些按键。我在下面有一些示例代码可以正常工作,直到最后的{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}"

答案每个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 FunctionSet notepadA= objShell.Exec("notepad") Set notepadB= objShell.Exec("notepad") WScript.Sleep 500SendKeysTo notepadA, "Hello I am Notepad A", 1000 SendKeysTo notepadB, "Hello I am Notepad B", 1000

希望你能采取类似的方法来解决你的问题。
另一答案
  1. 你在最后一行使用Shell,但你没有定义它。改为将其改为objShell
  2. 要发送Alt密钥,请使用"%"。例如: objShell.SendKeys "%" 您通常会在组合键中使用它。例如,要在大多数程序中打开File菜单,您可以使用Alt + F,或者: objShell.SendKeys "%f"
  3. 如果您的窗口标题发生变化,或者您因任何原因需要激活新窗口,请再次调用AppActivateobjShell.AppActivate "My new window title"

    推荐阅读