Страница: 1 | 2 |
Вопрос: Состояние файла
Добавлено: 13.09.05 18:37
Автор вопроса: LamerOnLine | ICQ: 334781088
Ответы
Всего ответов: 21
Номер ответа: 16
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #16
Добавлено: 14.09.05 12:06
Правда? Как?
Номер ответа: 17
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #17
Добавлено: 14.09.05 13:03
PS
Есть еще такие программы как FWatcher для локальной сети. Они могут смотреть кто к каким файлам обращается. Соответственно если файл копируется по локалке - можно использовать этот способ (исходник где-то валялся на дельфи)
Номер ответа: 18
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #18
Добавлено: 14.09.05 14:01
Извините, ходил на обед. Сейчас что-нибудь накодю.
Номер ответа: 19
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #19
Добавлено: 14.09.05 14:25
Вот, что то получилось на отслеживание появления файлов в указанной папке (в качестве примера). На форме Drive1,Dir1,List1. Подключена Microsoft WMI Scripting ... Насчет копирования я погорячился,вернее перепутал с принтером. Там ожидается окончание задания - потом выводится инфа.При копировании мониторится сразу при create.
Option Explicit
Dim objService As SWbemServices
Dim WithEvents objSink As SWbemSink
Private Sub Dir1_Change()
Form1.Caption = "Мониторинг папки " & Dir1.Path
Call Monitoring(Dir1.Path)
End Sub
Private Sub Drive1_Change()
 ir1.Path = Drive1.Drive
 ir1.Refresh
End Sub
Private Sub Form_Load()
Form1.Caption = "Мониторинг папки " & Dir1.Path
Call Monitoring(Dir1.Path)
End Sub
Private Sub Monitoring(monFolder As String)
Set objService = GetObject("WinMgmts:\\.\Root\CIMV2"
Set objSink = CreateObject("WbemScripting.SWbemSink"
objService.ExecNotificationQueryAsync objSink, _
"SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE " & _
"Targetinstance ISA 'CIM_DirectoryContainsFile' and " & _
"TargetInstance.GroupComponent = 'Win32_Directory.Name=""" & Mid(monFolder, 1, 3) & "\\\" & Replace(Mid(monFolder, 4), "\", "/" & """'"
End Sub
Private Sub objSink_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
Dim TmpStr As String
TmpStr = Format(Now, "dd/mm/yyyy - hh:mm:ss - " & "Создан файл: " & objWbemObject.TargetInstance.PartComponent
Call List1.AddItem(TmpStr, 0)
End Sub
Номер ответа: 20
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #20
Добавлено: 14.09.05 15:29
Тут немного накидал по изменению файла (используется при копировании).
На форме List1.
Option Explicit
Dim objService As SWbemServices
Dim WithEvents objSink As SWbemSink
Private Sub Form_Load()
Call Monitoring
End Sub
Private Sub Monitoring()
Set objService = GetObject("WinMgmts:\\.\Root\CIMV2"
Set objSink = CreateObject("WbemScripting.SWbemSink"
objService.ExecNotificationQueryAsync objSink, _
"SELECT * FROM __InstanceModificationEvent WITHIN 1 WHERE " _
& "TargetInstance ISA 'CIM_DataFile' and " _
& "TargetInstance.Name='c:\\temp\\vs_setup.msi'"
End Sub
Private Sub objSink_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
List1.AddItem "File: " & objWbemObject.TargetInstance.Name
List1.AddItem "New size: " & objWbemObject.TargetInstance.FileSize
List1.AddItem "Old size: " & objWbemObject.PreviousInstance.FileSize
List1.AddItem "-----"
If objWbemObject.TargetInstance.FileSize = objWbemObject.PreviousInstance.FileSize Then
MsgBox "Копирование завершено"
End If
End Sub
Номер ответа: 21
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #21
Добавлено: 14.09.05 15:31
'c:\\temp\\vs_setup.msi' - вместо этого Ваш файл.