易语言调用SetClipboardViewer的api实现剪贴版的内容监控

 更新时间:2018年11月29日 09:18:23   作者:易语言源码教程  
今天小编就为大家分享一篇关于易语言调用SetClipboardViewer的api实现剪贴版的内容监控,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

DLL命令表

.版本 2
.DLL命令 加入剪贴板监视链_d, 整数型, "user32.dll", "SetClipboardViewer", 公开, 成功,返回值将标识剪贴板查看器链中的下一个窗口。如果出现错误或剪贴板查看器链中没有其他窗口,则返回值为空。( hwndNextViewer 将为 NULL。)
  .参数 窗口句柄, 整数型, , hwnd 加入剪切板监视链中窗口句柄
.DLL命令 设置窗口信息_d, 整数型, "user32", "SetWindowLongA", 公开, 在窗口结构中为指定的窗口设置信息 指定数据的前一个值
  .参数 窗口句柄, 整数型, , hwnd,欲为其取得信息的窗口的句柄
  .参数 窗口信息值, 整数型, , nIndex,请参考GetWindowLong函数的nIndex参数的说明
  .参数 窗口信息新值, 整数型, , dwNewLong,由nIndex指定的窗口信息的新值
.DLL命令 发送消息_d, 整数型, "user32", "SendMessageA", 公开, 调用一个窗口的窗口函数,将一条消息发给那个窗口。
  .参数 窗口句柄, 整数型, , hwnd,要接收消息的那个窗口的句柄
  .参数 信息值, 整数型, , wMsg,消息的标识符
  .参数 参数一, 整数型, , wParam,具体取决于消息
  .参数 参数二, 整数型, , lParam,具体取决于消息;
.DLL命令 消息信息传送_d, 整数型, "user32", "CallWindowProcA", 公开, 返回值指定了消息处理结果,它与发送的消息有关。
  .参数 lpPrevWndFunc, 整数型, , 前一窗口函数地址
  .参数 hwnd, 整数型, , 指向接收消息的窗口过程的句柄
  .参数 msg, 整数型, , 消息类型
  .参数 wParam, 整数型, , 指定其余的、消息特定的信息。该参数的内容与Msg参数值有关
  .参数 lParam, 整数型, , 指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。
.DLL命令 移除剪贴板监视链_d, 整数型, "user32.dll", "ChangeClipboardChain", 公开, 从剪贴板查看窗口上删除一个窗口 将剪贴的连接从一个句柄转到下一个句柄。
  .参数 窗口句柄, 整数型, , hWndRemove表示从剪贴板监视链中移除的窗口句柄。 
  .参数 下一个窗口句柄, 整数型, , hWndNewNext表示观察链中下一个窗口的句柄。 SetClipboardViewer 的返回值

监视剪贴板的代码

.版本 2
.程序集 窗口程序集_启动窗口
.程序集变量 下一个窗口1, 整数型
.程序集变量 前一窗口1, 整数型
.程序集变量 窗口句柄1, 整数型
.程序集变量 下一个窗口2, 整数型
.程序集变量 前一窗口2, 整数型
.程序集变量 窗口句柄2, 整数型
.程序集变量 下一个窗口3, 整数型
.程序集变量 前一窗口3, 整数型
.程序集变量 窗口句柄3, 整数型
.子程序 __启动窗口_创建完毕
窗口句柄1 = 标签1.取窗口句柄 ()
窗口句柄2 = 标签2.取窗口句柄 ()
窗口句柄3 = 标签3.取窗口句柄 ()
前一窗口1 = 设置窗口信息_d (窗口句柄1, -4, 到整数 (&消息处理子程序1))
前一窗口2 = 设置窗口信息_d (窗口句柄2, -4, 到整数 (&消息处理子程序2))
前一窗口3 = 设置窗口信息_d (窗口句柄3, -4, 到整数 (&消息处理子程序3))
标签1.标题 = “窗口句柄; ” + 到文本 (窗口句柄1) + #换行符
标签2.标题 = “窗口句柄; ” + 到文本 (窗口句柄2) + #换行符
标签3.标题 = “窗口句柄; ” + 到文本 (窗口句柄3) + #换行符
.子程序 监视剪贴板1
下一个窗口1 = 加入剪贴板监视链_d (窗口句柄1)
标签1.标题 = 标签1.标题 + #换行符 + “下一个窗口; ” + 到文本 (下一个窗口1)
标签1.文本颜色 = #红褐
.子程序 取消剪贴板监视1
移除剪贴板监视链_d (窗口句柄1, 下一个窗口1) ' 从观察链中删除本观察窗口
标签1.文本颜色 = #黑色
.子程序 监视剪贴板2
下一个窗口2 = 加入剪贴板监视链_d (窗口句柄2)
标签2.标题 = 标签2.标题 + #换行符 + “下一个窗口; ” + 到文本 (下一个窗口2)
标签2.文本颜色 = #红褐
.子程序 取消剪贴板监视2
移除剪贴板监视链_d (窗口句柄2, 下一个窗口2) ' 从观察链中删除本观察窗口
标签2.文本颜色 = #黑色
.子程序 监视剪贴板3
下一个窗口3 = 加入剪贴板监视链_d (窗口句柄3)
标签3.标题 = 标签3.标题 + #换行符 + “下一个窗口; ” + 到文本 (下一个窗口3)
标签3.文本颜色 = #红褐
.子程序 取消剪贴板监视3
移除剪贴板监视链_d (窗口句柄3, 下一个窗口3) ' 从观察链中删除本观察窗口
标签3.文本颜色 = #黑色
.子程序 消息处理子程序1, 整数型, , 消息处理子程序,
.参数 窗口句柄_, 整数型, , hwnd 接收该消息的窗口句柄。
.参数 消息_, 整数型, , uMsg 消息标识 消息值
.参数 消息参数1, 整数型, , wParam
.参数 消息参数2, 整数型, , lParam
.判断开始 (消息_ = 2) ' 判断父窗口是否将被销毁 ( WM_DESTROY 2 2 )
  移除剪贴板监视链_d (窗口句柄1, 下一个窗口1)
.判断 (消息_ = 776) ' 判断剪贴板内容是否发生变化 WM_DRAWCLIPBOARD
  .如果真 (下一个窗口1 ≠ 0) ' 将 #WM_DRAWCLIPBOARD 消息传递给下一个观察链中的窗口
    发送消息_d (下一个窗口1, 消息_, 消息参数1, 消息参数2)
  .如果真结束
  标签11.标题 = 取剪辑板文本 ()
.判断 (消息_ = 781) ' WM_CHANGECBCHAIN
  ' 当程序调用 ChangeClipboardChain 时,Windows 会向当前剪贴板查看器发送一个 WM_CHANGECBCHAIN 消息。该消息的 wParam 参数是要从链里退出的窗口的句柄(即 ChangeClipboardChain 的第一个参数),lParam 是将要退出的窗口的下一个剪贴板查看器的窗口句柄(即 ChangeClipboardChain 的第二个参数)。
  ' 当你的程序收到了 WM_CHANGECBCHAIN 消息,则必须检查 wParam 是否等于你保存的 hwndNextViewer 值。如果相等,你的程序必须把 hwndNextViewer 设为 lParam。这个操作确保将来你得到的任何 WM_CHANGECBCHAIN 消息不会被发送给从链里退出的那个窗口。如果 wParam 不等于 hwndNextViewer,并且 hwndNextViewer 不为 NULL,就把消息发送给下一个剪贴板查看器:
  .判断开始 (消息参数1 = 下一个窗口1)
    下一个窗口1 = 消息参数2
  .判断 (下一个窗口1 ≠ 0)
    发送消息_d (下一个窗口1, 消息_, 消息参数1, 消息参数2)
  .默认
  .判断结束
.默认
.判断结束
返回 (消息信息传送_d (前一窗口1, 窗口句柄_, 消息_, 消息参数1, 消息参数2)) ' 将未处理的消息交由原窗口程序处理
.子程序 消息处理子程序2, 整数型, , 消息处理子程序,
.参数 窗口句柄_, 整数型, , hwnd 接收该消息的窗口句柄。
.参数 消息_, 整数型, , uMsg 消息标识 消息值
.参数 消息参数1, 整数型, , wParam
.参数 消息参数2, 整数型, , lParam
.判断开始 (消息_ = 2) ' 判断父窗口是否将被销毁
  移除剪贴板监视链_d (窗口句柄2, 下一个窗口2)
.判断 (消息_ = 776) ' 判断剪贴板内容是否发生变化 WM_DRAWCLIPBOARD
  .如果真 (下一个窗口2 ≠ 0)
    发送消息_d (下一个窗口2, 消息_, 消息参数1, 消息参数2)
  .如果真结束
  标签22.标题 = 取剪辑板文本 ()
.判断 (消息_ = 781) ' WM_CHANGECBCHAIN
  .判断开始 (消息参数1 = 下一个窗口2)
    下一个窗口2 = 消息参数2
  .判断 (下一个窗口2 ≠ 0)
    发送消息_d (下一个窗口2, 消息_, 消息参数1, 消息参数2)
  .默认
  .判断结束
.默认
.判断结束
返回 (消息信息传送_d (前一窗口2, 窗口句柄_, 消息_, 消息参数1, 消息参数2)) ' 将未处理的消息交由原窗口程序处理
.子程序 消息处理子程序3, 整数型, , 消息处理子程序,
.参数 窗口句柄_, 整数型, , hwnd 接收该消息的窗口句柄。
.参数 消息_, 整数型, , uMsg 消息标识 消息值
.参数 消息参数1, 整数型, , wParam
.参数 消息参数2, 整数型, , lParam
.判断开始 (消息_ = 2) ' 判断父窗口是否将被销毁
  移除剪贴板监视链_d (窗口句柄3, 下一个窗口3)
.判断 (消息_ = 776) ' 判断剪贴板内容是否发生变化 WM_DRAWCLIPBOARD
  .如果真 (下一个窗口3 ≠ 0)
    发送消息_d (下一个窗口3, 消息_, 消息参数1, 消息参数2)
  .如果真结束
  标签33.标题 = 取剪辑板文本 ()
.判断 (消息_ = 781) ' WM_CHANGECBCHAIN
  .判断开始 (消息参数1 = 下一个窗口3)
    下一个窗口3 = 消息参数2
  .判断 (下一个窗口3 ≠ 0)
    发送消息_d (下一个窗口3, 消息_, 消息参数1, 消息参数2)
  .默认
  .判断结束
.默认
.判断结束
返回 (消息信息传送_d (前一窗口3, 窗口句柄_, 消息_, 消息参数1, 消息参数2)) ' 将未处理的消息交由原窗口程序处理
.子程序 _按钮监视1_被单击
监视剪贴板1 ()
按钮监视1.禁止 = 真
按钮取消监视1.禁止 = 假
.子程序 _按钮取消监视1_被单击
取消剪贴板监视1 ()
按钮监视1.禁止 = 假
按钮取消监视1.禁止 = 真
.子程序 _按钮监视2_被单击
监视剪贴板2 ()
按钮监视2.禁止 = 真
按钮取消监视2.禁止 = 假
.子程序 _按钮取消监视2_被单击
取消剪贴板监视2 ()
按钮监视2.禁止 = 假
按钮取消监视2.禁止 = 真
.子程序 _按钮监视3_被单击
监视剪贴板3 ()
按钮监视3.禁止 = 真
按钮取消监视3.禁止 = 假
.子程序 _按钮取消监视3_被单击
取消剪贴板监视3 ()
按钮监视3.禁止 = 假
按钮取消监视3.禁止 = 真

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • 易语言制作黑客小程序源码

    易语言制作黑客小程序源码

    今天小编就为大家分享一篇关于易语言制作黑客小程序源码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 易语言读环境变量命令使用讲解

    易语言读环境变量命令使用讲解

    今天小编就为大家分享一篇关于易语言读环境变量命令使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-11-11
  • 易语言设置使用绘画命令在画板中的画出方式

    易语言设置使用绘画命令在画板中的画出方式

    今天小编就为大家分享一篇关于易语言设置使用绘画命令在画板中的画出方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-11-11
  • 易语言通过解析免费下载QQ付费音乐的代码

    易语言通过解析免费下载QQ付费音乐的代码

    今天小编就为大家分享一篇关于易语言通过解析免费下载QQ付费音乐的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-11-11
  • 易语言同时载入多个窗口方法

    易语言同时载入多个窗口方法

    在本文里小编给大家分享是关于易语言载入多个窗口的代码以及相关知识点,需要的可以测试下。
    2018-12-12
  • 易语言如果命令使用讲解

    易语言如果命令使用讲解

    今天小编就为大家分享一篇关于的易语言如果命令使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • 易语言二维码生成器制作教学

    易语言二维码生成器制作教学

    在本篇文章中小编给大家分享了关于易语言制作二维码生成器的知识点内容,对此有兴趣的朋友们学习下。
    2019-01-01
  • 易语言做语音朗读工具方法

    易语言做语音朗读工具方法

    在本篇内容里小编为大家分享的是关于如何使用易语言做语音朗读工具的教学,需要的朋友们可以学习下。
    2019-01-01
  • 易语言超文本浏览框取真实句柄方法

    易语言超文本浏览框取真实句柄方法

    在本篇内容中小编给大家整理了关于易语言超文本浏览框取真实句柄方法,有兴趣的读者们参考一下。
    2018-11-11
  • 易语言如何导入模块?易语言模块导入的步骤

    易语言如何导入模块?易语言模块导入的步骤

    在本文里小编给大家分享了易语言导入模块的具体操作步骤和方法,喜欢易语言的朋友们学习下。
    2018-12-12

最新评论