我不想强制它可见,我只想检查它是否被 Windows 隐藏。
默认情况下,Windows 会隐藏系统图标(操作中心、电池、网络、声音、日期和时间)以外的托盘图标。
我不想强制它可见,我只想检查它是否被 Windows 隐藏。
默认情况下,Windows 会隐藏系统图标(操作中心、电池、网络、声音、日期和时间)以外的托盘图标。
我使用函数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 系列。希望对你有效。
@Hans 说没有直接的方法可以找到,这是不幸的(但有道理)。
您仍然可以尝试间接找出答案。您可以拍摄桌面位图的快照,找到任务栏(我认为在 Windows 7 中它不能从底部移动,我不确定)并寻找您的图标。如果你找到它——它就在那里。