VB6监视/操作剪贴板示例(VB6.0代码)

相关问题: http://topic.csdn.net/u/20090910/18/2c6ec777-8507-4559-8257-c9f052025b32.html

界面:



剪贴板的监视,需要先使用SetClipboardViewer设置某个句柄为剪贴板查看器的一员.

然后当剪贴板发生改变时,系统就会向这个句柄发送WM_DRAWCLIPBOARD消息.

只要使用子类化拦截到这个消息即可.

主要代码:

Option Explicit
'剪贴板监视与管理示例代码
'BY 嗷嗷叫的老马
'http://www.m5home.com

Private Declare Function SetClipboardViewer Lib "user32.dll" ( _
ByVal hwnd As Long) As Long
Private Const WM_DRAWCLIPBOARD As Long = &H308

Dim WithEvents objSC As cSubclass

Private Sub Command1_Click()
Me.Tag = 1
Clipboard.Clear
Clipboard.SetText Text1.Text
Me.Tag = 0
End Sub

Private Sub Command2_Click()
Me.Tag = 1
Clipboard.Clear
Clipboard.SetText Text2.Text
Me.Tag = 0
End Sub

Private Sub Form_Load()
Call SetClipboardViewer(Me.hwnd) '添加本句柄到剪贴板查看器列表
Set objSC = New cSubclass

objSC.AddWindowMsgs Me.hwnd
End Sub

Private Sub Form_Unload(Cancel As Integer)
objSC.DeleteWindowMsg Me.hwnd
Set objSC = Nothing
End Sub

Private Sub objSC_MsgCome(ByVal bBefore As Boolean, bHandled As Boolean, lReturn As Long, lng_hWnd As Long, uMsg As Long, wParam As Long, lParam As Long)
If bBefore Then
Select Case uMsg
Case WM_DRAWCLIPBOARD '剪贴板被改变
If Clipboard.GetFormat(vbCFText) And Me.Tag <> "1" Then '只对文本进行处理,自己复制时不处理
If Option1.Value Then Text1.Text = Clipboard.GetText
If Option2.Value Then Text2.Text = Clipboard.GetText
End If
End Select
End If
End Sub


工程打包下载:

下载文件 点击下载此文件

评论: 0 | 引用: 0 | 查看次数: 1177