Hе приходит FILE_ACTION_RENAMED_NEW_NAME

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Hе приходит FILE_ACTION_RENAMED_NEW_NAME

Сообщение Eduard » 08.02.2009 (Вс) 0:45

При использовании api ReadDirectoryChangesW, не приходитя уведомления FILE_ACTION_RENAMED_NEW_NAME

Вот функция GetChanges, что использую vb:

Код: Выделить всё
Public Function GetDirHndl(ByVal PathDir As String) As Long
On Error Resume Next
Dim hDir As Long
If Right(PathDir, 1) <> "\" Then PathDir = PathDir + "\"
hDir = CreateFile(PathDir, FILE_LIST_DIRECTORY, FILE_SHARE_READ + FILE_SHARE_WRITE + FILE_SHARE_DELETE, _
                   ByVal 0&, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS Or FILE_FLAG_OVERLAPPED, ByVal 0&)
GetDirHndl = hDir
End Function

Public Sub StartWatch()
If (DirHndl = 0) Or (DirHndl = -1) Then Exit Sub
    nBufLen = 1024
    ReDim cBuffer(0 To nBufLen)
    Call ReadDirectoryChangesW(DirHndl, cBuffer(0), nBufLen, WSubFolder, _
                        FILE_NOTIF_GLOB, nReadLen, 0, 0)
End Sub

Public Function GetChanges() As String
   On Error Resume Next
   Dim fName As String
   MoveMemory fiBuffer.NextEntryOffset, cBuffer(0), 4
   MoveMemory fiBuffer.Action, cBuffer(4), 4
   MoveMemory fiBuffer.FileNameLength, cBuffer(8), 4
   ReDim cBuff2(0 To fiBuffer.FileNameLength)
   MoveMemory cBuff2(0), cBuffer(12), fiBuffer.FileNameLength
   fiBuffer.FileName = cBuff2
   Select Case fiBuffer.Action
            Case FILE_ACTION_ADDED
                sAction = "Added file"
            Case FILE_ACTION_REMOVED
                sAction = "Removed file"
            Case FILE_ACTION_MODIFIED
                sAction = "Modified file"
            Case FILE_ACTION_RENAMED_OLD_NAME
                sAction = "Renamed from"
            Case FILE_ACTION_RENAMED_NEW_NAME
                sAction = "Renamed to"
            Case Else
                sAction = "Unknown"
   End Select
   fName = sAction + "-" + FolderPath + fiBuffer.FileName
   If sAction <> "Unknown" Then GetChanges = fName
End Function


Нашел решение, этой преслаутой задачи, только на С, на самом деле инфа приходит, только нада как-то из буфера вытаскивать инфу. Помогите, как решить это в вышеуказанном коде.

Решение на С/С++
On Fatal Error Resume Next

Йода
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 99
Зарегистрирован: 06.01.2008 (Вс) 21:04
Откуда: Московская область

Re: Hе приходит FILE_ACTION_RENAMED_NEW_NAME

Сообщение Йода » 08.02.2009 (Вс) 16:11

По запросу "declare function ReadDirectoryChangesW" гугль выдал 10 результатов поиска. Результат поиска №5 содержит готовый к употреблению проект монитора каталогов. Ссылка: http://binaryworld.net/Main/CodeDetail.aspx?CodeId=3764. (Сам я в нём не разбирался из-за того, что для меня сейчас более актуально отловить злобного трояна, жрущего трафик)
Sub or Function not defined

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Re: Hе приходит FILE_ACTION_RENAMED_NEW_NAME

Сообщение Eduard » 08.02.2009 (Вс) 22:04

2Йода :D аха... дикое спасибо... всё работает как надо!!
On Fatal Error Resume Next

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Re: Hе приходит FILE_ACTION_RENAMED_NEW_NAME

Сообщение Vi » 10.02.2009 (Вт) 9:28

Йода писал(а):(Сам я в нём не разбирался из-за того, что для меня сейчас более актуально отловить злобного трояна, жрущего трафик)

Посмотри http://www.online-solutions.ru/ru/osam_autorun_manager.php, мне как-то помог. Правда, вкупе с антивирусом.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 73

    TopList