Alt Tab覆盖Win32标识符

8
我正在将来自外部传感器(例如键盘)的事件映射到键盘快捷方式,并希望使用快速切换覆盖窗口(即Alt-Tab菜单)切换应用程序,但我希望保持显示切换菜单直到选择了一个应用程序。基本上,我的做法是这样的:
if(notInSwitchMenu) 
{   // Alt-Tab keystroke, but Alt remains pressed : the menu is still visible
    Press(VK_MENU); 
    Press(VK_TAB); 
    Release(VK_TAB);
}
else
{

    if(event1) //Tab keystroke : next app
    {
        Press(VK_TAB);
        Release(VK_TAB) ;
    } 
    else if(event2) //Shift-Tab keystroke  : previous app
    { 
        Press(VK_SHIFT); 
        Press(VK_TAB);
        Release(VK_TAB);
        Release(VK_SHIFT) 
    }
    else if(event3) // we get out of the menu : the selected app has the focus.
    {
        Release(VK_MENU);
    } 
}

按下和释放键盘只需使用正确的属性调用SendInput。

我的问题是我不知道一个稳健的方法来确定用户当前是否在Alt-Tab程序列表中。有人知道如何使用Win32 API识别Alt-Tab覆盖菜单吗?


2
你知道吗,使用 Ctrl+Alt+Tab 一次将强制列表保持打开状态,直到您选择一个应用程序? - Christian Ivicevic
1
EVENT_SYSTEM_SWITCHSTART/EVENT_SYSTEM_SWITCHEND 事件会告诉你 Alt+Tab 窗口何时出现和消失。 - Raymond Chen
@Raymond Chen 回答那个作为一个答案。 - sandun dhammika
在您的特定情况下,您知道当您按下alt键时,只需在其中保留一个标志以了解您的应用程序何时仍然按住alt键。 - Deanna
1个回答

9

EVENT_SYSTEM_SWITCHSTART/EVENT_SYSTEM_SWITCHEND 事件告诉你何时出现和消失 Alt+Tab 窗口。


1
详细来说,使用SetWinEventHook来接收这些事件。 - Remy Lebeau
有人可以附上一个例子吗? - yonni
据我所知,自从Windows 10以来,EVENT_SYSTEM_SWITCHSTART/EVENT_SYSTEM_SWITCHEND就无法正常工作了。您可以尝试使用以下解决方案: https://dev59.com/26rka4cB1Zd3GeqPa0FB#49597746 - mattsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接