当我们在Windows 8.1上按开始菜单时,它会以瓷砖的形式显示所有新的开始菜单。此菜单显示在整个屏幕上。有没有办法检测此菜单是否在c ++中打开。是否有一个winAPI在8.1 SDK中这样做。
提前致谢。
答案 0 :(得分:2)
调用CoCreateInstance(CLSID_AppVisibility,...)获取实现IAppVisibility的对象,然后调用IAppVisibility :: IsLauncherVisible以查看开始菜单是否可见。
中得到了证明答案 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()