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

时间:2015-10-13 14:52:35

标签: c++ winapi visual-c++ microsoft-metro windows-8.1

当我们在Windows 8.1上按开始菜单时,它会以瓷砖的形式显示所有新的开始菜单。此菜单显示在整个屏幕上。有没有办法检测此菜单是否在c ++中打开。是否有一个winAPI在8.1 SDK中这样做。

提前致谢。

3 个答案:

答案 0 :(得分:2)

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

这在Start screen visibility sample

中得到了证明

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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

的ClassName