有很多程序会监视剪贴板,比如迅雷,这样当你复制一个迅雷下载链接时,迅雷就可以自动启动并创建一个新的下载任务。下面我们就来看看如何实现这个技术。
实现这个技术一共需要4步:
第一步:Add the window to the clipboard viewer chain.
通过SetClipboardViewer()传入窗口句柄,所有监视剪贴板的窗口句柄会组成一个链表(后来者靠前)。这样当剪贴板内容发生变化时,Windows系统给给这些窗口发生消息。
第二步:Process the WM_CHANGECBCHAIN message.
当这个监视剪贴板的窗口句柄链表发生变化时,会收到这个消息。每个窗口都应该给下一个窗口传递消息。
这个消息的wParam和lParam说明如下:
wParam表示
A handle to the window being removedfrom the clipboard viewer chain
lParam表示
A handle to the next window in thechain following the window being removed. This parameter is NULL if thewindow being removed is the last window in the chain。
第三步:Process the WM_DRAWCLIPBOARD message.
当剪贴板数据发送变化时,窗口会依次收到这个消息。
第四步:Remove the window from the clipboard viewer chain before itis destroyed.
当窗口关闭时,应该调用ChangeClipboardChain()来通知Windows系统将自己从监视剪贴板的窗口句柄链表中移除。
代码如下(下载地址:http://download.csdn.net/download/morewindows/6793027)