如何检测windows8.1的开始菜单

How to detect windows8.1 start menu?

本文关键字:开始 菜单 windows8 何检测 检测      更新时间:2023-10-16

当我们在windows 8.1上按下开始菜单时,它会显示所有新的开始菜单,并以磁贴的形式显示应用程序。这个菜单显示在整个屏幕上。是否有一种方法来检测该菜单是否在c++中打开。在8.1 SDK中是否有winAPI可以这样做?

调用CoCreateInstance(CLSID_AppVisibility,…)来获取实现IAppVisibility的对象,然后调用IAppVisibility::IsLauncherVisible来查看开始菜单是否可见。

在开始屏幕可见性示例

中演示了这一点

我不确定是否存在一个专用的WinAPI调用,但你可以做的是运行EnumWindows与开始菜单打开和关闭,以确定窗口句柄,然后检查它的类和其他参数-这样,如果你知道如何识别它,你可以在你的程序中始终执行相同的逻辑-枚举窗口,找到开始菜单的句柄,检查它是否可见

你必须使用钩子,shell的一个特殊钩子https://msdn.microsoft.com/en-us/library/windows/desktop/ms644991%28v=vs.85%29.aspx,然后在HSHELL_WINDOWACTIVATED事件检查返回的GetForegroundWindow()的ClassName