4

我不想强制它可见,我只想检查它是否被 Windows 隐藏。

默认情况下,Windows 会隐藏系统图标(操作中心、电池、网络、声音、日期和时间)以外的托盘图标。

在此处输入图像描述

4

2 回答 2

2

我使用函数Shell_NotifyIconGetRect,并获取返回值来检查 NotifyIcon 是否被隐藏。

NotifyIcon未隐藏时(在可见托盘部分),该函数将返回零。当NotifyIcon被隐藏时,函数将返回 0x00000001 表示Incorrect function. 这真的很hack,我不知道为什么。这是一个例子:

bool isIconHidden = false;
int hresult = Shell_NotifyIconGetRect(ref nid, out rect);

if (hresult == 0)
{
    isIconHidden = false;
}
else if (hresult == 0x00000001)
{
    isIconHidden = true;
}
else
    throw new Win32Exception(hresult);

有关 Shell_NotifyIconGetRect 函数使用的更多详细信息,请参阅通知图标位置确定托盘图标的位置。但我不确定该解决方案是否适用于所有 Windows 平台。我的操作系统是 Win10 系列。希望对你有效。

于 2021-07-16T13:16:33.677 回答
1

@Hans 说没有直接的方法可以找到,这是不幸的(但有道理)。

您仍然可以尝试间接找出答案。您可以拍摄桌面位图的快照,找到任务栏(我认为在 Windows 7 中它不能从底部移动,我不确定)并寻找您的图标。如果你找到它——它就在那里。

于 2013-02-03T22:10:45.870 回答