问题描述
我正在遍历所有窗口。
我找到了一个名称如下的窗口:“Groove-Musik”。 它有 hwnd 1111。
我想知道它的进程名称/PID。
当我在任务管理器中查看它时,我看到以下内容:
我右键单击它们的项目并选择“详细信息”,我看到以下内容:
现在我尝试通过代码来做同样的事情。
我使用以下内容:
Dim ProcID&
GetwindowThreadProcessId(1111,ProcID)
ProcID 不是 8028。
相反,它返回以下进程的 proc id:
它与所有 UWP 托管应用程序(如计算器、Groove、照片、电影)相同。任务管理器指向Music.UI.exe、Video.UI.exe,但我的代码总是指向这个愚蠢的ApplicationFrameHost.exe。
我怎样才能获得正确的 PID/我做错了什么?
谢谢!
编辑:根据建议,我现在尝试了以下操作: 我在 hwnd 1111 上运行了“EnumChildWindows”。
结果是:
window hwnd: 1111
window text: "Groove-Musik"
window process: "applicationframehost.exe",PID: 22216
----------------
childwindow #1
child window hwnd: 0
child window classname: ""
child window text: ""
child window process: "applicationframehost.exe",PID: 22216
----------------
childwindow #2
child window hwnd: 196874
child window classname: "ApplicationFrameTitleBarWindow"
child window text: ""
child window process: "applicationframehost.exe",PID: 22216
----------------
childwindow #3
child window hwnd: 197220
child window classname: "ApplicationFrameTitleBarWindow"
child window text: ""
child window process: "applicationframehost.exe",PID: 22216
----------------
childwindow #4
child window hwnd: 131488
child window classname: "ApplicationFrameInputSinkWindow"
child window text: ""
child window process: "applicationframehost.exe",PID: 22216
我被要求发布 calc.exe 的结果。 在这里,但我想指出的是,此时,它的进程并未暂停。
这是我单击计算器应用程序时的详细信息视图:
window hwnd: 202848
window text: "Rechner"
window process: "applicationframehost.exe",PID: 16500
----------------
childwindow #1
child window hwnd: 0
child window classname: ""
child window text: ""
child window process: "[system process]",PID: 0
----------------
childwindow #2
child window hwnd: 201864
child window classname: "ApplicationFrameTitleBarWindow"
child window text: ""
child window process: "applicationframehost.exe",PID: 16500
----------------
childwindow #3
child window hwnd: 398148
child window classname: "Windows.UI.Core.CoreWindow"
child window text: "Rechner"
child window process: "calculator.exe",PID: 17600
----------------
childwindow #4
child window hwnd: 201862
child window classname: "ApplicationFrameTitleBarWindow"
child window text: ""
child window process: "applicationframehost.exe",PID: 16500
----------------
childwindow #5
child window hwnd: 464044
child window classname: "ApplicationFrameInputSinkWindow"
child window text: ""
child window process: "applicationframehost.exe",PID: 16500
通过这里的请求是我如何获得初始窗口:
' The desktop is the highest window
hw = GetDesktopWindow()
' It's first child is the 1st top level window
hw = Getwindow(hw,GW_CHILD)
' Now load all top level windows
Do
lCaptionLen = GetwindowTextLength(hw)
sCaption = VBA.Space(lCaptionLen + 1)
lCaptionLen = GetwindowText(hw,sCaption,lCaptionLen + 1)
'Some initial checks if the window is visible to the user
'like IsVisible(hw),IsWindow(hw),etc
hw = Getwindow(hw,GW_HWNDNEXT)
Loop While hw <> 0
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)