如何解决如何获取 UWP 托管应用程序的 PID?
我正在遍历所有窗口。
我找到了一个名称如下的窗口:“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 举报,一经查实,本站将立刻删除。