GetForegroundWindow获取的是托管进程ApplicationFrameHost,而不是真正的进程,比如XD软件
Posted qtiger
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GetForegroundWindow获取的是托管进程ApplicationFrameHost,而不是真正的进程,比如XD软件相关的知识,希望对你有一定的参考价值。
问题描述
最近做一个实时检测系统当前激活进程的软件,Photoshop、PPT、Word都没有问题,但是无法检测到XD软件的进程,返回的仅仅是ApplicationFrameHost进程,经过研究发现:XD软件被进程ApplicationFrameHost托管, 因此GetForegroundWindow()方法返回带有标题的窗口,但不返回托管的实际进程,
解决思路
解决方法是再次通过EnumChildWindows获取ApplicationFrameHost的子窗口句柄,直到获取到实际进程。
代码:
GitHub :https://github.com/qiuxianhu/WinFormGetActiveProcess
CSDN:
以上是关于GetForegroundWindow获取的是托管进程ApplicationFrameHost,而不是真正的进程,比如XD软件的主要内容,如果未能解决你的问题,请参考以下文章
GetWindow(GetForegroundWindow()失败
delphi程序向另一个可执行程序发消息(使用GetForegroundWindow; 找出当前操作系统中活动的第一个窗口)