在当前目录下的/musics/下有N多音乐文件,程序运行的时候, windowsmediaplayer控件正在播放其中某一个文件:1、当程序检测正在播放的文件被删除或移动时,弹出对话框警告不准删除或移动,然后阻止这个文件的删除或移动2、当有音乐文件复制到这个文件夹(某些特定的音乐文件,*.mp3,*.wav,*.mid,*.ogg)的时候,弹出对话框提示“新增了音乐文件”3、当这个文件夹下有音乐文件被删除,但不是正在播放的文件时,提示“删除了音乐文件”
调试欢乐多
http://www.84ren.com/read.php?tid-28140.html
' 新建一个工程标准EXE工程, 添加 List1
' 运行程序,然后在‘我的电脑’中选中一个或多个文件
' 用鼠标拖到 List1 中,看效果吧。
Option ExplicitPrivate Sub Form_Load() List1.OLEDropMode = 1End SubPrivate Sub List1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) If (Effect = 7) Then
Dim i&
List1.Clear
For i = 1 To Data.Files.Count
List1.AddItem Data.Files.Item(i)
Next
End If
End Sub
Private WithEvents DeleteFileEvent As SWbemSink
Private objSWbemServices As SWbemServices Private Sub Form_Load()
StartMonitorCreateFileEvent "c:\\\\boot"
StartMonitorDeleteFileEvent "c:\\\\boot"
End Sub
Private Sub Form_Unload(Cancel As Integer)
CreateFileEvent.Cancel
DeleteFileEvent.Cancel
End Sub '共享创建事件
Private Sub CreateFileEvent_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
Dim strFileName As String
Dim i As Integer
strFileName = objWbemObject.TargetInstance.PartComponent
i = InStr(strFileName, "CIM_DataFile.Name=")
strFileName = Mid(strFileName, i + Len("CIM_DataFile.Name=") + 1, Len(strFileName) - Len("CIM_DataFile.Name=") - i - 1)
strFileName = Replace(strFileName, "\\", "\")
MsgBox "创建文件: " & strFileName End Sub
'dim ss as WbemScripting.
Private Sub DeleteFileEvent_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
Dim strFileName As String
Dim i As Integer
strFileName = objWbemObject.TargetInstance.PartComponent
i = InStr(strFileName, "CIM_DataFile.Name=")
strFileName = Mid(strFileName, i + Len("CIM_DataFile.Name=") + 1, Len(strFileName) - Len("CIM_DataFile.Name=") - i - 1)
strFileName = Replace(strFileName, "\\", "\")
MsgBox "删除文件: " & strFileName
End Sub Private Sub StartMonitorCreateFileEvent(ByVal szFolderName As String)
Set CreateFileEvent = New SWbemSink
Set objSWbemServices = GetObject("winmgmts:\\.\root\cimv2")
objSWbemServices.ExecNotificationQueryAsync CreateFileEvent, "SELECT * FROM __InstanceCreationEvent " & _
"WITHIN 1 WHERE TargetInstance ISA 'CIM_DirectoryContainsFile' And TargetInstance.GroupComponent='Win32_Directory.Name=""" & _
szFolderName & """'"
End Sub Private Sub StartMonitorDeleteFileEvent(ByVal szFolderName As String)
Set DeleteFileEvent = New SWbemSink
Set objSWbemServices = GetObject("winmgmts:\\.\root\cimv2")
objSWbemServices.ExecNotificationQueryAsync DeleteFileEvent, "SELECT * FROM __InstanceDeletionEvent " & _
"WITHIN 1 WHERE TargetInstance ISA 'CIM_DirectoryContainsFile' And TargetInstance.GroupComponent='Win32_Directory.Name=""" & _
szFolderName & """'"
End Sub