【发布时间】:2013-02-03 20:33:08
【问题描述】:
我不想强制它可见,我只想检查它是否被 Windows 隐藏。
Windows 默认隐藏系统图标(操作中心、电池、网络、声音、日期和时间)以外的托盘图标。
【问题讨论】:
-
按照设计,无法找出答案。
标签: c# .net windows system-tray trayicon
我不想强制它可见,我只想检查它是否被 Windows 隐藏。
Windows 默认隐藏系统图标(操作中心、电池、网络、声音、日期和时间)以外的托盘图标。
【问题讨论】:
标签: c# .net windows system-tray trayicon
我使用函数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函数的使用,请看Notify Icon Position和Determining location of tray icon。 但我不确定该解决方案是否适用于所有 Windows 平台。我的操作系统是Win10 家庭。希望它对你有用。
【讨论】:
@Hans 说没有直接的方法可以找到,这是不幸的(但有道理)。
您仍然可以尝试间接找出答案。你可以take a snapshot of the desktop位图,找到任务栏(我认为在Windows 7中它不能从底部移动,我不确定)并寻找你的图标。如果你找到它 - 它就在那里。
【讨论】: