У меня возникла необходимость написать File System Watcher на VB6(не .NET).
Накапал вот это:
- Код: Выделить всё
Private strDir
Private strComputer
Private Body
Private objWMIService
Private objEvents
Private objReceivedEvent
Private Sub cmdStartWatch_Click()
strDir = "\\temp\\"
strComputer = "CompName"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMv2")
Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE " & _
"TargetInstance ISA 'CIM_DataFile'" & _
" AND TargetInstance.Drive = 'c:'" & _
" AND TargetInstance.Path ='" & strDir & "'")
tmr.Enabled = True
End Sub
Private Sub Form_Load()
tmr.Interval = 1000
End Sub
Private Sub tmr_Timer()
Set objReceivedEvent = objEvents.NextEvent
If Len(objReceivedEvent.TargetInstance.FileName) <> 0 Then
Body = "File modifed: " & objReceivedEvent.TargetInstance.FileName & " " & objReceivedEvent.TargetInstance.Name
MsgBox Body
End If
End Sub
Работает, но вешает приложение при обращении к форме хоть и крутится таймер.
Однако должен заметить код предназначен для WScript, так что видимо для VB он не совсем применим.
Каково ваше мнение на этот счет?
Может быть кто встречал примеры с реализацией FSW на VB6 или на Python'e?