繁体   English   中英

如何以编程方式打开/关闭Windows系统网络图标

[英]How to turn Windows system network icon on/off programmatically

我想在应用程序中打开/关闭系统网络图标,就像我们可以通过控制面板进行操作一样。 我知道“ HideSCANetwork”注册表项,但是要使用此解决方案,我需要在更改设置后重新启动资源管理器。 是否有其他解决方案可以像系统一样无缝地执行此操作?

例

目前尚无用于thois的官方API。 这样做的原因是Microsoft希望使用户能够防止其通知区域变得太满。 问题是太多的应用程序启动了用户不关心的通知图标。

由于许多用户不知道如何摆脱这些图标,因此Microsoft决定通过默认情况下隐藏它们来提供帮助。 如果应用程序可以访问这些隐藏/显示设置,则默认情况下,应用程序将仅显示通知,我们将回到开始的地方。 因此,没有提供用于以编程方式修改这些设置的机制。

您想要做一些听起来同样恶意的事情,即隐藏一个重要的系统图标。 如果确定要这样做,则可以对设置的存储方式(可能在注册表中)进行反向工程,然后以这种方式更改设置。 但是,这样做会违反系统设计。

现在,我发现了一个不完善的解决方案。 基本思想来自这里: http : //www.codeproject.com/Articles/10807/Shell-Tray-Info-Arrange-your-system-tray-icons

一些技巧:

  • 该解决方案支持Win 7,可以删除XP检查代码。
  • 在wow64上,您需要更改结构TRAYDATA并使用TBUTTON64:

     struct TRAYDATA { DWORD64 hwnd; UINT uID; UINT uCallbackMessage; DWORD Reserved[2]; DWORD64 hIcon; }; typedef struct _TBBUTTON64 { int iBitmap; int idCommand; BYTE fsState; BYTE fsStyle; BYTE bReserved[6]; DWORD64 dwData; DWORD64 iString; } TBBUTTON64, NEAR* PTBBUTTON64, *LPTBBUTTON64; typedef const TBBUTTON64 *LPCTBBUTTON64; 
  • 当您找到要隐藏的图标时(通过使用提示文字加上所有者过程),将TB_HIDEBUTTON消息发送到通知区域窗口。

不完美的部分是托盘图标将被隐藏,但是通知区域不会调整大小。 因此,通知区域上有一个空白区域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM