找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4756|回复: 0

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

[复制链接]

275

主题

3019

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17066

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2009-9-14 06:57:05 | 显示全部楼层 |阅读模式
相关问题:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://topic.csdn.net/u/20090910/18/2c6ec777-8507-4559-8257-c9f052025b32.html" target="_blank">http://topic.csdn.net/u/20090910/18/2c6ec777-8507-4559-8257-c9f052025b32.html</a><br/><br/>界面:<br/><br/><img border="0" alt="" src="http://www.m5home.com/blog/attachments/month_0909/e20099146487.jpg"/><br/><br/>剪贴板的监视,需要先使用SetClipboardViewer设置某个句柄为剪贴板查看器的一员.<br/><br/>然后当剪贴板发生改变时,系统就会向这个句柄发送WM_DRAWCLIPBOARD消息.<br/><br/>只要使用子类化拦截到这个消息即可.<br/><br/>主要代码:<br/>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"></span></div></div></div><textarea style="DISPLAY: none" class="vb" rows="15" cols="100" name="code">Option Explicit
'剪贴板监视与管理示例代码
'BY 嗷嗷叫的老马
'&lt;a href="http://www.m5home.com" target="_blank"&gt;http://www.m5home.com&lt;/a&gt;

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

Dim WithEvents objSC As cSubclass

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

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

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

Private Sub Form_Unload(Cancel As Integer)
&nbsp;&nbsp;&nbsp;&nbsp;objSC.DeleteWindowMsg Me.hwnd
&nbsp;&nbsp;&nbsp;&nbsp;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)
&nbsp;&nbsp;&nbsp;&nbsp;If bBefore Then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select Case uMsg
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case WM_DRAWCLIPBOARD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '剪贴板被改变
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Clipboard.GetFormat(vbCFText) And Me.Tag &lt;&gt; "1" Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '只对文本进行处理,自己复制时不处理
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Option1.Value Then Text1.Text = Clipboard.GetText
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Option2.Value Then Text2.Text = Clipboard.GetText
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Select
&nbsp;&nbsp;&nbsp;&nbsp;End If
End Sub
</textarea><br/><br/>工程打包下载:<br/><br/><img style="MARGIN-TOP: 0px; MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px" alt="下载文件" src="http://www.m5home.com/blog/images/download.gif" 0px? -4px 2px="2px"/> <a href="http://www.m5home.com/blog/attachments/month_0909/f200991464918.rar" target="_blank">点击下载此文件</a> <br/>
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表