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

时间:2015-11-18 13:49:53

标签: c# c++ winapi spy++

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

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

当我们按下显示它们的按钮(“显示隐藏的图标”)时,我们有一个新窗口,其中包含所有图标:
enter image description here
隐藏的窗口标有绿色圆圈

如何抓住这个隐藏窗口的句柄?

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

所以我找到了按钮的句柄并使用了日志选项:
enter image description here

在记录结果中,我只看到常规系统托盘工具栏的窗口句柄:
enter image description here

那么我怎样才能抓住隐藏窗口的句柄(我在问题的乞讨中标记为绿色的窗口,首先是图片)。

参考文献(我发现但没有帮助我的链接):
How to capture Notification icons properties using Microsoft Spy++
 Get information about hidden tray icons in windows7

1 个答案:

答案 0 :(得分:0)

我成功了!

我成功地用Spy ++抓住了它:

enter image description here

enter image description here

代码解决方案:

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;
}