如何获取显示隐藏系统托盘图标的窗口的隐藏窗口句柄

E23*_*235 5 c# c++ winapi spy++

我正在尝试用 C# 编写应用程序来捕捉按下按钮时出现的隐藏窗口的句柄(“显示隐藏的图标”)。

当我们不显示所有通知区域时,我们隐藏了系统托盘图标。

当我们按下显示它们的按钮(“显示隐藏的图标”)时,我们有一个新窗口,其中包含所有图标:
在此处输入图片说明
用绿色圆圈标记的隐藏窗口

我怎样才能抓住这个隐藏窗口的句柄?

当我使用 Spy++ 时,我找不到这个窗口,因为当我单击键盘上的任何其他键时,窗口就会消失。

所以我找到了按钮的句柄并使用了日志记录选项:
在此处输入图片说明

在日志结果中,我只看到了常规系统托盘工具栏的窗口句柄:
在此处输入图片说明

那么我怎样才能抓住隐藏窗口的句柄(我在我的问题的乞求中用绿色标记的那个,第一张图片)。

参考资料(我找到但没有帮助我的链接):
如何使用 Microsoft Spy++ 捕获通知图标属性
获取有关 windows7 中隐藏托盘图标的信息

E23*_*235 6

我成功 !

我用 Spy++ 成功捕获了它:

在此输入图像描述

在此输入图像描述

代码解决方案:

static IntPtr GetHiddenSystemTrayHandle()
{
    IntPtr hWndTray = User32.FindWindow("NotifyIconOverflowWindow", null);
    if (hWndTray != IntPtr.Zero)
    {
            if (hWndTray != IntPtr.Zero)
            {
                // Windows caption "Overflow Notification Area"
                hWndTray = User32.FindWindowEx(hWndTray, IntPtr.Zero, "ToolbarWindow32", null);
                return hWndTray;
            }
    }

    return IntPtr.Zero;
}
Run Code Online (Sandbox Code Playgroud)