VB.NET实现Windows剪贴板监视器

VB.NET实现Windows剪贴板监视器,第1张

概述Windows剪贴板 剪贴板(ClipBoard)是内存中的一块区域,是Windows内置的一个非常有用的工具,通过小小的剪贴板,架起了一座彩桥,使得在各种应用程序之间,传递和共享信息成为可能。然而美中不足的是,剪贴板只能保留一份数据,每当新的数据传入,旧的便会被覆盖。 相关Windows API 最主要的是SetClipboardViewer,每当剪贴板的内容发生变化时,该函数通过WM_DRAW windows剪贴板

剪贴板(ClipBoard)是内存中的一块区域,是windows内置的一个非常有用的工具,通过小小的剪贴板,架起了一座彩桥,使得在各种应用程序之间,传递和共享信息成为可能。然而美中不足的是,剪贴板只能保留一份数据,每当新的数据传入,旧的便会被覆盖。

相关windows API

最主要的是SetClipboardVIEwer,每当剪贴板的内容发生变化时,该函数通过WM_DRAWCliPBOARD消息将窗口加入被通知的窗口链。
由于剪贴板观察器链中下一个窗口的句柄还没有返回,应用程序不应传递它在SetClipboardVIEwer
调用过程中接收到的WM_DRAWCliPBOARD消息。
如果要从剪贴板观察器链中去掉窗口链,则应用程序必须调用ChangeClipboard成员函数。

Declare auto Function SetClipboardVIEwer lib "user32" (ByVal HWnd As IntPtr) As IntPtrDeclare auto Function ChangeClipboardChain lib "user32" (ByVal HWnd As IntPtr,ByVal HWndNext As IntPtr) As BooleanDeclare auto Function SendMessage lib "User32" (ByVal HWnd As IntPtr,ByVal Msg As Integer,ByVal wParam As IntPtr,ByVal lParam As IntPtr) As Long
wndproc函数

*** 作系统向应用程序发送一系列消息,如左键按下和左键抬起,应用程序将通过GetMessage等方法最终将消息提交到窗口过程(WndProc[英文全称windows process])指向一个应用程序定义的窗口过程的指针。

我们需要重写该函数来处理剪贴板内容改变事件:

    'OverrIDe WndProc to get messages...    Protected OverrIDes Sub WndProc(ByRef m As Message)        Select Case m.Msg            Case Is = WM_DRAWCliPBOARD 'The clipboard has changed...                '##########################################################################                ' Process Clipboard Here :)........................                '##########################################################################                SendMessage(mNextClipBoardVIEwerHWnd,m.Msg,m.WParam,m.LParam)                '显示剪贴板中的文本信息                If Clipboard.ContainsText() = True Then                    Label1.Text = Clipboard.GetText()                End If                '显示剪贴板中的图片信息                If Clipboard.ContainsImage() = True Then                    PictureBox1.Image = Clipboard.Getimage()                    PictureBox1.Update()                End If            Case Is = WM_CHANGECBCHAIN 'Another clipboard vIEwer has removed itself...                If m.WParam = CType(mNextClipBoardVIEwerHWnd,IntPtr) Then                    mNextClipBoardVIEwerHWnd = m.LParam                Else                    SendMessage(mNextClipBoardVIEwerHWnd,m.LParam)                End If        End Select        MyBase.WndProc(m)    End Sub

效果:


源码下载:VB.NET实现Windows剪贴板监视器

相关文章:c#实现Windows剪贴板监视器

总结

以上是内存溢出为你收集整理的VB.NET实现Windows剪贴板监视器全部内容,希望文章能够帮你解决VB.NET实现Windows剪贴板监视器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1271411.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存