剪贴板有内容时再干掉吧,这样不需要定时器了.'新建窗体 Option Explicit '让剪贴板失效 ' 'By 嗷嗷叫的老马 'http://www.m5home.com/Private Const WM_DRAWCLIPBOARD As Long = &H308&Private Declare Function SetClipboardViewer Lib "user32.dll" ( _ ByVal hWnd As Long) As Long Private Declare Function ChangeClipboardChain Lib "user32.dll" ( _ ByVal hWnd As Long, _ ByVal hWndNext As Long) As LongDim WithEvents oSubClass As cSubclass '单类模块子类化类,作者为PctGL,下载地址:http://www.m5home.com/bak_blog/article/487.html Dim lPreClipboard As LongPrivate Sub Form_Load() Set oSubClass = New cSubclass '对象实例化 oSubClass.SetMsgHook Me.hWnd '挂上自己
lPreClipboard = SetClipboardViewer(Me.hWnd) '插入一个观察窗口 End SubPrivate Sub Form_Unload(Cancel As Integer) Call ChangeClipboardChain(Me.hWnd, lPreClipboard) '恢复下一个观察窗口
oSubClass.SetMsgUnHook '解除子类化 Set oSubClass = Nothing '销毁对象 End SubPrivate Sub oSubClass_GetWindowMessage(Result As Long, ByVal cHwnd As Long, ByVal Message As Long, ByVal wParam As Long, ByVal lParam As Long) Select Case Message Case WM_DRAWCLIPBOARD '剪贴板中有内容了 Clipboard.Clear '干掉..... End Select Result = oSubClass.CallDefaultWindowProc(cHwnd, Message, wParam, lParam) End Sub
Clipboard.Clear
end sub
你们的思路是一样的
我目前也是这么做的
但这个方法,timer的interval需要很小,不然还是有可能不行,timer这么频繁调整用一定影响程序的畅性有没有更根本的让剪贴板失效的办法?失常也行。
Option Explicit
'让剪贴板失效
'
'By 嗷嗷叫的老马
'http://www.m5home.com/Private Const WM_DRAWCLIPBOARD As Long = &H308&Private Declare Function SetClipboardViewer Lib "user32.dll" ( _
ByVal hWnd As Long) As Long
Private Declare Function ChangeClipboardChain Lib "user32.dll" ( _
ByVal hWnd As Long, _
ByVal hWndNext As Long) As LongDim WithEvents oSubClass As cSubclass '单类模块子类化类,作者为PctGL,下载地址:http://www.m5home.com/bak_blog/article/487.html
Dim lPreClipboard As LongPrivate Sub Form_Load()
Set oSubClass = New cSubclass '对象实例化
oSubClass.SetMsgHook Me.hWnd '挂上自己
lPreClipboard = SetClipboardViewer(Me.hWnd) '插入一个观察窗口
End SubPrivate Sub Form_Unload(Cancel As Integer)
Call ChangeClipboardChain(Me.hWnd, lPreClipboard) '恢复下一个观察窗口
oSubClass.SetMsgUnHook '解除子类化
Set oSubClass = Nothing '销毁对象
End SubPrivate Sub oSubClass_GetWindowMessage(Result As Long, ByVal cHwnd As Long, ByVal Message As Long, ByVal wParam As Long, ByVal lParam As Long)
Select Case Message
Case WM_DRAWCLIPBOARD '剪贴板中有内容了
Clipboard.Clear '干掉.....
End Select
Result = oSubClass.CallDefaultWindowProc(cHwnd, Message, wParam, lParam)
End Sub