使用AppActivate更改活动窗口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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 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
希望你能采取类似的方法来解决你的问题。
另一答案
- 你在最后一行使用
Shell
,但你没有定义它。改为将其改为objShell
。 - 要发送
Alt
密钥,请使用"%"
。例如:objShell.SendKeys "%"
您通常会在组合键中使用它。例如,要在大多数程序中打开File
菜单,您可以使用Alt
+F
,或者:objShell.SendKeys "%f"
- 如果您的窗口标题发生变化,或者您因任何原因需要激活新窗口,请再次调用
AppActivate
:objShell.AppActivate "My new window title"
以上是关于使用AppActivate更改活动窗口的主要内容,如果未能解决你的问题,请参考以下文章
Android:将片段和弹出窗口的点击事件中生成的变量传递给活动的方法
任何更改后的 Android Firebase 数据库活动/片段正在关闭