【叶帆源码】获取Windows 外壳信息通知

刘洪峰AIoT
博客专家认证
业界专家认证
2005-12-23 03:14:33
从网上看了一篇《分享windows的秘密-外壳通知消息》的文章,感觉很不错,可是它是delphi的程序,和VB相差很大,API在VB中没有对应的声明,并且一些结构体在VB中没有现成的定义,所以很是研究了一番,优盘的插入、拔出,光盘的插入、取出都有了相应的通知,效果不错。

可以接收的消息如下:

SHCNE_ASSOCCHANGED 一个文件关联被改变了
SHCNE_ATTRIBUTES 一个项目或文件夹的属性被改变了
SHCNE_CREATE 文件夹的外壳成员被创建了
SHCNE_DELETE 非文件夹的外壳成员被删除了
SHCNE_DRIVEADD 添加了一个驱动器
SHCNE_DRIVEADDGUI 通过外壳添加的驱动器
SHCNE_DRIVEREMOVED 一个驱动器被删除了
SHCNE_EXTENDED_EVENT 未被使用
SHCNE_FREESPACE 驱动器的自由空间数有了变化
SHCNE_MEDIAINSERTED 存储介质被插入到驱动器中
SHCNE_MEDIAREMOVED 存储介质从驱动器中被删除
SHCNE_MKDIR 一个目录被创建
SHCNE_NETSHARE 本地的目录被共享
SHCNE_NETUNSHARE 本地目录被取消共享
SHCNE_RENAMEFOLDER 文件夹名称被改变
SHCNE_RENAMEITEM 非文件的外壳对象的名称被改变
SHCNE_RMDIR 一个文件夹被删除
SHCNE_SERVERDISCONNECT 计算机被服务器断开
SHCNE_UPDATEDIR 一个文件夹中的内容被改变
SHCNE_UPDATEIMAGE 系统图像列表中的一个图像被改变
SHCNE_UPDATEITEM 一个非文件夹外壳对象的名称被改变


【文章链接】http://blog.csdn.net/yefanqiu/archive/2005/12/23/560234.aspx
【源码地址】http://www.bjjr.com.cn/YeFan/SourceCode/yfsysmsg.rar
【示例图片】http://blog.csdn.net/images/blog_csdn_net/yefanqiu/23649/o_Test.jpg
【关键源码】

'*************************************************************************
'**函 数 名:SysMsgRegister
'**输 入:无
'**输 出:无
'**功能描述:消息注册
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2005-12-23 13:18:02
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Public Sub SysMsgRegister(hwnd As Long)
Dim nr As NotifyRegister

lngFlag = Array(SHCNE_ASSOCCHANGED, _
SHCNE_ATTRIBUTES, _
SHCNE_CREATE, _
SHCNE_DELETE, _
SHCNE_DRIVEADD, _
SHCNE_DRIVEADDGUI, _
SHCNE_DRIVEREMOVED, _
SHCNE_EXTENDED_EVENT, _
SHCNE_FREESPACE, _
SHCNE_MEDIAINSERTED, _
SHCNE_MEDIAREMOVED, _
SHCNE_MKDIR, _
SHCNE_NETSHARE, _
SHCNE_NETUNSHARE, _
SHCNE_RENAMEFOLDER, _
SHCNE_RENAMEITEM, _
SHCNE_RMDIR, _
SHCNE_SERVERDISCONNECT, _
SHCNE_UPDATEDIR, _
SHCNE_UPDATEIMAGE, _
SHCNE_UPDATEITEM)

strFlag = Array("文件关联被改变", _
"文件夹属性被改变", _
"文件夹外壳成员被创建", _
"非文件夹外壳成员被删除", _
"添加了一个驱动器", _
"通过外壳添加的驱动器", _
"一个驱动器被删除了", _
"未使用", _
"驱动器自由空间发生变化", _
"存储介质插入驱动器", _
"存储介质被移除", _
"一个目录被创建", _
"本地目录被共享", _
"本地目录被取消共享", _
"文件夹名称被改变", _
"非文件的外壳对象名称被改变", _
"一个文件夹被删除", _
"计算机被服务器断开", _
"一个文件夹的内容被改变", _
"系统图像列表中的一个图像被改变", _
"一个非文件夹外壳对象的名称被改变")

lngHandle = SHChangeNotifyRegister(hwnd, SHCNF_ACCEPT_INTERRUPTS Or SHCNF_ACCEPT_NON_INTERRUPTS, SHCNE_ALLEVENTS, WM_YFSYSMSG, 1, nr)
If lngHandle > 0 Then
frmSysmsg.picFlag.BackColor = RGB(0, 200, 0)
Else
frmSysmsg.picFlag.BackColor = RGB(255, 0, 0)
End If
End Sub

'*************************************************************************
'**函 数 名:UnSysMsgRegister
'**输 入:无
'**输 出:无
'**功能描述:取消注册
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2005-12-23 13:19:06
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Public Sub UnSysMsgRegister()
If lngHandle > 0 Then
SHChangeNotifyDeregister lngHandle
End If
End Sub



...全文
827 35 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwshws123 2006-04-08
  • 打赏
  • 举报
回复
保存,以后看。
woolnil 2006-04-08
  • 打赏
  • 举报
回复
学习一下
Mister 2006-04-07
  • 打赏
  • 举报
回复
狂顶叶凡的帖子,顶死为止。。。。
空心兜兜 2006-04-07
  • 打赏
  • 举报
回复
呵呵!
学习ING!
顶!!
kmlxk0 2006-04-07
  • 打赏
  • 举报
回复
哈哈,刨出来顶!~
liyi830 2006-04-07
  • 打赏
  • 举报
回复
up
lizhigao 2006-04-07
  • 打赏
  • 举报
回复
丁页
boyzhang 2006-04-06
  • 打赏
  • 举报
回复
up
迈克揉索芙特 2006-04-05
  • 打赏
  • 举报
回复
楼主亲自来顶啊

没仔细看楼主的代码,我知道用IShellExecuteHook完全可以获得Shell消息。
刘洪峰AIoT 2006-04-05
  • 打赏
  • 举报
回复
up
laviewpbt 2006-04-05
  • 打赏
  • 举报
回复
佩服!
vansoft 2006-04-05
  • 打赏
  • 举报
回复
丁頁
mingtian2008 2006-04-05
  • 打赏
  • 举报
回复
支持
northwolves 2006-04-05
  • 打赏
  • 举报
回复
支持叶老大
kinsey0514 2006-04-05
  • 打赏
  • 举报
回复
帮顶一下
verywzm 2006-04-05
  • 打赏
  • 举报
回复
顺便说一下,用了楼主的API浏览器,好象不能像FOXAPI一样在VB的外接程序中载入,还是我没找到?如果没有建议完善一下,这个功能好象挺实用的。另外,建议设一个查找功能,有时一大段实例,要找到你想看的函数,相当不容易。
verywzm 2006-04-05
  • 打赏
  • 举报
回复
学习中.....UP
IamDeane 2006-01-01
  • 打赏
  • 举报
回复
叶老大的东东要顶啊,呵呵
paullbm 2005-12-31
  • 打赏
  • 举报
回复
你好。可以问你另一个问题吗?那就是关于控件注册的问题。
问题说明网址链接:


http://community.csdn.net/Expert/topic/4476/4476317.xml?temp=.8426477
boyzhang 2005-12-27
  • 打赏
  • 举报
回复
看看先
加载更多回复(15)
内容概要:本文介绍了软件定义汽车(SDV)的最佳实践案例,重点围绕基于Vector技术的电子电气(E/E)架构设计与实现。文档展示了高算力计算平台(HPC)、区域控制器(Zone ECU)和车载网络(如CAN、Ethernet)的系统架构布局,并结合AUTOSAR操作系统(Classic/Adaptive)、虚拟化(Hypervisor)和SOA服务设计,构建现代化车载系统。通过vCANdrive平台演示了从开发、测试(SIL/HIL)、到OTA升级的全流程,涵盖传感器、执行器、应用层软件及云端协同的集成方案。同时展示了硬件原型(如树莓派、Triboard)和MICROSAR系列工具链在实际项目中的应用。; 适合人群:从事汽车电子系统开发、车载软件架构设计以及智能网联汽车研发的工程师和技术管理人员,具备一定的嵌入式系统或AUTOSAR基础者更佳。; 使用场景及目标:①理解软件定义汽车的整体架构设计方法;②掌握基于Vector工具链的HPC与区域控制器集成方案;③实现OTA更新、SIL/HIL测试、ETH-CAN通信转换等关键技术验证;④支持智能驾驶(ADAS)与智能座舱(IVI)系统的快速原型开发。; 阅读建议:建议结合Vector相关工具(如PREEvision、CANoe4SW、MICROSAR)进行实践操作,重点关注系统分层设计、通信机制与软件更新流程,同时可参考文档中的硬件连接示意图与信号映射关系进行仿真与实车验证。

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧