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()失败

c# 调用User32.dll

delphi程序向另一个可执行程序发消息(使用GetForegroundWindow; 找出当前操作系统中活动的第一个窗口)

如何从非 DPC 应用程序获取托管配置?

获取托管设备的 JavaScript 地理位置

在使用 Owin 自托管的 Web API 中获取远程主机 IP