关于监控剪贴板的问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 23:13:45
请问怎样在程序运行后,监控剪贴板中的内容,如果发现用户复制了D:\qui.dat文件,就会清空剪贴板。如果剪贴板中是其他的内容,就不执行清空。

用Timer太耗费资源,应该是用SetClipboardViewer将本程序窗口加入到Clipboard监视窗口链中,之后如果任何程序更改剪贴板内容,窗口就会收到一个WM_DRAWCLIPBOARD消息
用SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf winProc钩住本窗体消息,在收到WM_DRAWCLIPBOARD消息后用EnumClipboardFormats和GetClipboardFormatName获得剪贴板中所有可用格式,如果用户复制文件,剪贴板中将会有CF_HDROP格式的内容,再用GetClipBoardData获取内容,判断文件列表中是否有D:\qui.dat文件,如果有,则用EmptyClipboard清空剪贴板

vb里要用API,我给你一个VB.NET的吧,
加个TIMER

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Clipboard.ContainsFileDropList Then

For Each s As String In Clipboard.GetFileDropList
If s.ToLower = "D:\qui.dat".ToLower Then
Clipboard.Clear()
Exit For
End If
Next

End If
End Sub

给个思路,可以先设置好此文件头文件信息,再检测剪贴板中的内空的头文件是否相同,相同则清空!