编程实现检测和变更“连接后在通知区域显示图标”的状态

DawnPine 2006-10-09 08:13:13
打开“本地连接”的属性对话框,可以看到一个能勾选的选项“连接后在通知区域显示图标”。我的问题是如何用VB编程实现检测、变更该选项的状态。

先散200分看看效果
...全文
955 点赞 收藏 19
写回复
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Xujl008 2006-10-12
qqq
回复
liyi830 2006-10-11
学习
回复
DawnPine 2006-10-10
那就...
先这样吧

^_^
回复
总结一下我和老大的观点:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards
中可以找到系统中当前所有的网卡,在下面每一项中都有一个ServiceName的键值。
这个键值是一个GUID值。

再在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\GUDI值
中找到ShowIcon节点。

比如:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{F7471FC6-0F75-4ED1-AF03-9158C7C8242B}\Connection

ShowIcon=1 显示
ShowIcon=0 隐藏

这样设置至少可以控制开机时的显示状态,修改完注册表后给系统发个消息,通知系统初始化托盘图标。
回复
DawnPine 2006-10-10
楼上说的是
回复
happy_sea 2006-10-10
楼主要实现的无非就是检测“本地连接”的“连接后在通知区域显示图标”选项是否选中,以及如何更改。
遍历和修改注册表的相应键值应该是正确的做法。修改注册表后虽然不能让结果立刻在任务栏右下角表现出来,但是发送消息使系统初始化任务栏的话应该有变化的。另外任务栏是explorer的一部分吧,结束并重新运行explorer.exe应该也能看到效果。
回复
韧恒 2006-10-10
Re: "我不是要处理添加或删除那一瞬间的事"、“windows是怎样让systray中出现图标的?”
楼主可否说得详细些?你到底要处理什么呢?
回复
zq972 2006-10-09
高分真的能吸引星星........

学习
回复
deterly 2006-10-09
都是星星族啊,大开眼界
回复
ZOU_SEAFARER 2006-10-09
来学习的!!
回复
happy_sea 2006-10-09
又学到不少。
回复
DawnPine 2006-10-09
回开心海:
如果没有勾选“连接后在通知区域显示图标”,运行systray.exe后不会在systray中出现所需的图标

回那个欣赏偶的分的星星:
从注册表入手我也考虑过, 而且也用regsnap找到了这个键值.
但我总觉得应该还有别的办法(可惜我对windows还不够了解)比如说, 注册表改了之后, windows是怎样让systray中出现图标的?是否有某个API或WMI可用?等等

回那个4星MVP:
我知道遍历注册表可以枚举网卡的GUID, 但却不知如何做到这一点.
谢谢你!

另: 监视通知区好象对这个问题帮助不大,我不是要处理添加或删除那一瞬间的事.


来的都有分, 不管是猩猩还是穿三角裤的,不够我再开帖放.
好象有个家伙叫"只看满分帖",恰好偶只发满分帖
哈哈
回复
TechnoFantasy 2006-10-09
楼上正解,LZ可以先在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards
中可以找到系统中当前所有的网卡,在下面每一项中都有一个ServiceName的键值。
这个键值是一个GUID值。

再在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\GUDI值
中找到ShowIcon节点。
回复
韧恒 2006-10-09
还真没做过,不过此问题挺有趣,我有个思路不知对楼主是否有帮助,就是对任务栏的通知区域进行消息捕获,无论通知区域中的图标添加或删除时都会得到相应的消息,根据捕获到的数据可以判断出相应的程序。
回复
TechnoFantasy 2006-10-09
在注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards
中可以找到系统中当前所有的网卡,在下面每一项中都有一个ServiceName的键值。
根据这个值在
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}
下面遍历所有的节点,找到节点中NetCfgInstanceId的值和ServiceName的键值相同的节点。
在这个节点中应该可以找到控制显示图标的键。
回复
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{F7471FC6-0F75-4ED1-AF03-9158C7C8242B}\Connection

ShowIcon=1 显示
ShowIcon=0 隐藏

这样设置至少可以控制开机时的显示状态,修改完注册表后给系统发个消息,通知系统初始化托盘图标。
回复
happy_sea 2006-10-09
刚才在网上搜了一阵也没有结果。
楼主可以下载一个regsnap,对比一下“连接后在通知区域显示图标”选中前后注册表有何变化。
回复
happy_sea 2006-10-09
把c:\windows\system32\systray.exe搞成开机自动运行,就会在右下角显示连接状态,不过这不是正规的方法,而且实现不了检测的要求
回复
125857fht 2006-10-09
追星族,学习了
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7449

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告