通知系统应用程序已完成的事件.
#Include <WinAPIEx.au3>
_WinAPI_ShellChangeNotify ( $iEvent, $iFlags [, $iItem1 [, $iItem2]] )
$iEvent | 事件描述. 通常在指定的时间只能有一个事件. 如果超过一个指定事件, $iItem2 包含的值必须与 $iItem2 的参数值一样,分别为所有指定的事件. 参数可以是一或多个下列值: $SHCNE_ALLEVENTS - 所有发生的事件. $SHCNE_ASSOCCHANGED - 文件类型关联发生变化. $iFlags 参数必须指定 $SHCNF_IDLIST.不使用 $iItem1 与 $iItem2 且必须为 0. $SHCNE_ATTRIBUTES - 项目或文件夹的属性发生了变化.$iFlags 必须指定 $SHCNF_IDLIST 或 $SHCNF_PATH.$iItem1 包含已改变的项目或文件夹. $iItem2 不必使用且必须为 0. $SHCNE_CREATE - 已创建一个非文件夹项目.$iFlags 参数必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含已创建项目.$iItem2 不必使用且必须为 0. $SHCNE_DELETE - 已删除一个非文件夹项目. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含已删除的项目.$iItem2 不必使用且必须为 0. $SHCNE_DRIVEADD - 已添加一个驱动器. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含已添加驱动器的根目录.$iItem2 不必使用且必须为 0. $SHCNE_DRIVEADDGUI - 未使用. $SHCNE_DRIVEREMOVED - 驱动器已被删除. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含已删除驱动器的根目录.$iItem2 不必使用且必须为 0. $SHCNE_EXTENDED_EVENT - 未使用. $SHCNE_FREESPACE - 驱动器上的可用空间量已更改. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含已更改可用空间驱动器的根.$iItem2 不必使用且必须为 0. $SHCNE_MEDIAINSERTED - 存储媒体已被插入到驱动器. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含插入新媒体驱动器的根.$iItem2 不必使用且必须为 0. $SHCNE_MEDIAREMOVED - 驱动器存储媒体已被删除. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含删除媒体的驱动器的根.$iItem2 不必使用且必须为 0. $SHCNE_MKDIR - 已创建一个文件夹. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含已创建的文件夹.$iItem2 不必使用且必须为 0. $SHCNE_NETSHARE - 本地共享文件夹已传递到网络. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含被共享文件夹.$iItem2 不必使用且必须为 0. $SHCNE_NETUNSHARE - 本地共享文件夹不再传递给网络. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含不再被共享的文件夹.$iItem2 不必使用且必须为 0. $SHCNE_RENAMEFOLDER - 文件夹的名称已更改. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含以前指向项目标识符列表(PIDL)或文件夹名称的指针. $iItem2 包含新 PIDL 或文件夹的名称. $SHCNE_RENAMEITEM - 非文件夹的项目名称已更改. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含以前 PIDL 或项目的名称. $iItem2 包含新 PIDL 或项目的名称. $SHCNE_RMDIR - 文件夹已被删除. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含已删除的文件夹.$iItem2 不必使用且必须为 0. $SHCNE_SERVERDISCONNECT - 计算机已从服务器断开. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含计算机已断开的服务器.$iItem2 不必使用且必须为 0. $SHCNE_UPDATEDIR - 现有文件夹内容发生了变化,但文件夹仍然存在,并且没有被重命名. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含已更改的文件夹.$iItem2 不必使用且必须为 0. 如果创建,删除,或重命名文件夹, 分别使用 $SHCNE_MKDIR, $SHCNE_RMDIR, 或 $SHCNE_RENAMEFOLDER. $SHCNE_UPDATEIMAGE - 系统图像列表的图象发生了变化. $iFlags 必须指定为 $SHCNF_DWORD. $iItem1 包含已更改图像在图像列表中的索引.$iItem2 不必使用且必须为 0. $SHCNE_UPDATEITEM - 现有项目(文件夹或非文件夹)已经改变,但该项目仍然存在,并且没有被重命名. $iFlags 必须指定为 $SHCNF_IDLIST 或 $SHCNF_PATH. $iItem1 包含已更改的项目.$iItem2 不必使用且必须为 0. 如果创建,删除,或重命名非文件夹项目,分别使用 $SHCNE_CREATE, $SHCNE_DELETE, 或 $SHCNE_RENAMEITEM. $SHCNE_DISKEVENTS - 指定所有磁盘事件标识符的组合. $SHCNE_GLOBALEVENTS - 指定组合所有全局事件标识符. $SHCNE_INTERRUPT - 指定事件发生一个系统中断. 由于此值修改其他事件值,它已不能单独使用. |
$iFlags | 表示 $iItem1 与 $iItem2 参数含义的标志 参数可以是以下值之一: $SHCNF_DWORD - $iItem1 与 $iItem2 参数是 DWORD 值. $SHCNF_IDLIST - $iItem1 与 $iItem2 参数为 ITEMIDLIST 结构,代表受变化影响的项目地址. 每个 ITEMIDLIST 必须相对于桌面的文件夹. $SHCNF_PATH - $iItem1 与 $iItem2 参数为字符串,包含受变更影响的项目完整路径名称. $SHCNF_PRINTER - $iItem1 与 $iItem2 参数为字符串,代表受变更影响的打印机名称. $SHCNF_FLUSH - 当通知已被传递给所有影响的组件时, 函数才有返回值. 由于此标志会修改其他数据类型的标志,因此它不能单独使用. $SHCNF_FLUSHNOWAIT - 函数开始传递通知到所有受影响的组件时,应尽快返回通知到已经开始的进程. 由于此标志会修改其他数据类型的标志,因此它不能单独使用. 此标志包含 $SHCNF_FLUSH 标志. $SHCNF_NOTIFYRECURSIVE - 通知客户注册所有子项. |
$iItem1 | [可选参数] 第一个事件相关值. |
$iItem2 | [可选参数] 第二个事件相关值. |
成功: | 返回 1. |
失败: | 返回 0,设置@error标志为非 0 值. |
在MSDN中搜索
#Include <APIConstants.au3>
#Include <WinAPIEx.au3>
Opt('MustDeclareVars', 1)
Global $Icon = RegRead('HKCR\AutoIt3Script\DefaultIcon', '')
If Not @error Then
RegWrite('HKCR\AutoIt3Script\DefaultIcon', '', 'REG_SZ', @SystemDir & '\shell32.dll,-152')
_WinAPI_ShellChangeNotify($SHCNE_ASSOCCHANGED, $SHCNF_FLUSH)
MsgBox(0, '', 'The icon for .au3 files has been changed. Press OK to restore it.')
RegWrite('HKCR\AutoIt3Script\DefaultIcon', '', 'REG_SZ', $Icon)
_WinAPI_ShellChangeNotify($SHCNE_ASSOCCHANGED, $SHCNF_FLUSH)
EndIf