gpt4 book ai didi

excel - 使用 VBA 确定进程 ID

转载 作者:行者123 更新时间:2023-12-02 17:37:31 25 4
gpt4 key购买 nike

情况 - 我有一个宏,需要将击键按顺序发送到两个 Firefox 窗口。不幸的是,两个窗口具有相同的标题。为了处理这个问题,我激活了该窗口,发送了我的击键,然后使用 F6 加载第二个窗口的 URL,然后发送击键,然后使用 F6 将其返回到原始页面。

问题是加载网页不可靠。页面加载速度差异很大,以至于使用等待命令无法一致或可靠地确保击键进入第二个窗口。

问题 -我读过一些帖子,其中提到应用程序激活将与进程 ID 一起使用。由于每个窗口都有自己的 PID,因此这是处理两个具有相同标题的窗口的理想方法。我无法找到具体如何确定具有给定名称的每个窗口的 PID 的信息。

最佳答案

您可以使用如下所示的内容。您必须修改 Win32_Process 中提供的不同信息。类来确定哪个窗口是哪个。同样重要的是要记住,一个窗口可能意味着多个进程。

Public Sub getPID()        
Dim objServices As Object, objProcessSet As Object, Process As Object

Set objServices = GetObject("winmgmts:\\.\root\CIMV2")
Set objProcessSet = objServices.ExecQuery("SELECT ProcessID, name FROM Win32_Process WHERE name = ""firefox.exe""", , 48)

'you may find more than one processid depending on your search/program
For Each Process In objProcessSet
Debug.Print Process.ProcessID, Process.Name
Next

Set objProcessSet = Nothing

End Sub

由于您可能想稍微探索一下 WMI 的选项,因此您可能需要添加“工具>>对 Microsoft WMI 库的引用”,这样您就不必将 Dim bla 作为对象处理。然后您可以添加断点并查看“局部变量” Pane 中发生的情况。

添加引用后:

Public Sub getDetailsByAppName()

Dim objProcessSet As WbemScripting.SWbemObjectSet
Dim objProcess As WbemScripting.SWbemObject
Dim objServices As WbemScripting.SWbemServices
Dim objLocator As WbemScripting.SWbemLocator

'set up wmi for local computer querying
Set objLocator = New WbemScripting.SWbemLocator
Set objServices = objLocator.ConnectServer(".") 'local

'Get all the gory details for a name of a running application
Set objProcessSet = objServices.ExecQuery("SELECT * FROM Win32_Process WHERE name = ""firefox.exe""", , 48)

RecordCount = 1
'Loop through each process returned
For Each objProcess In objProcessSet
'Loop through each property/field
For Each Field In objProcess.Properties_
Debug.Print RecordCount, Field.Name, Field.Value
Next
RecordCount = RecordCount + 1
Next

Set objProcessSet = Nothing
Set objServices = Nothing
Set objLocator = Nothing


End Sub

这将打印出为名称“firefox.exe”找到的每个进程的每个属性。

关于excel - 使用 VBA 确定进程 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44075292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com