2013-08-11 9 views
1

может кто-нибудь дать мне часть кода или API о том, как я могу отслеживать любое событие копирования на ОС ОС Windows с помощью vb classic (vb 6.0).Обнаружение события копирования на окнах

Я хочу, чтобы захватить событие копирования, можно сказать, что пользователь копирует файл на компьютер, как я могу получить имя файла, который копируется, и записать журнал, который был скопирован в эту дату. Я хочу создать бесплатную программу отслеживания файлов. У меня есть googled, и я не могу найти код для обнаружения события копирования в окнах. Пожалуйста помоги.

ответ

0

Создание элемента управления Timer (или иметь его в петлю с DoEvents()) и использовать GetClipboardData() так:

Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long 
Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long 
Private Declare Function CloseClipboard Lib "user32"() As Long 
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Long) As Long 
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Long, ByVal ByteLen As Long) 
Private Sub Timer1_Timer() 
    Dim ptr As Long 
    OpenClipboard hwnd 
    ptr = GetClipboardData(49158) 
    If ptr Then 
     Dim size As Long 
     size = lstrlen(ptr) 
     If size > 0 Then 
      Dim data As String 
      data = Space$(size) 
      CopyMemory ByVal data, ByVal ptr, size 
      MsgBox data 
     End If 
    End If 
    CloseClipboard 
End Sub 

FYI: 49158 частный формат буфера обмена называется «FileName» и, к сожалению, не может быть использована с Clipboard.GetData(), так как число слишком велико для целого.

Когда вы что-то копируете, переменная data будет содержать имя файла, скопированное.

0

Вы можете следить за буфером обмена: ClipBoard Monitor C# Это будет охватывать больше, чем файлы и сообщает только, что имя файла или содержимое файла было скопировано, а не когда оно на самом деле. Вам нужно будет сделать больше, чтобы поймать фактическую запись.

+0

спасибо за ответ, но я не использую C# здесь ... Я буду использовать vb6.0, есть файлwatch.dll на vb.net, но я предпочел Vb6.0 –

0

Я считаю, что этот термин вам не хватает в «крюк», в этом случае этот вопрос/ответ должен получить, что вам нужно: Windows XP/7 copy FILE hook

1) Вы можете подключить функции WinAPI как CopyFile и CopyFileEx создание системы широкий крюк, писать крюк самостоятельно или с помощью API крючок библиотеки как madCodeHook или Deviare API крюк (я использовал оба библиотеки с отличными результатами.)

2) написание фильтров файловой системы, драйвера.