使用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

希望你能采取类似的方法来解决你的问题。

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

以上是关于使用AppActivate更改活动窗口的主要内容,如果未能解决你的问题,请参考以下文章

Android:将片段和弹出窗口的点击事件中生成的变量传递给活动的方法

如何使用视图绑定从片段更改父活动中的视图[重复]

如何更改片段中的主要活动变量

任何更改后的 Android Firebase 数据库活动/片段正在关闭

如何更改 viewpager 中每个片段的点指示器(活动和非活动)的颜色?

在方向更改时保留列表片段中的列表