易语言利用系统API监视系统剪贴板
一些常用的下载工具一般都会有监视剪贴板的功能,我们在编写某些程序的时候,同样的也可能需要做一个监视系统剪贴板的功能,可是如果用时钟来监控的话会浪费很多系统资源,所以今天小编就来教大家用系统API来监视系统剪贴板。
首先创建两个子程序,一个用来开始监视,一个用来停止监视,这样在任意地方需要用的时候或者不需要的时候只需要调用一次这两个子程序即可实现开始与停止监视的效果。
首先我们需要一些API,粘贴以下文本到易语言中即可。
-------------------文本开始-------------------
.版本 2
.DLL命令 API_监视剪贴板, 整数型, "user32", "SetClipboardViewer", , 在CLIPBOARD浏览器链中加入窗口
.参数 hwnd, 整数型
.DLL命令 API_停止监视剪贴板, 整数型, "user32", "ChangeClipboardChain", , 从剪贴板查看窗口上删除一个窗口
.参数 hwnd, 整数型
.参数 hWndNext, 整数型
.DLL命令 API_置窗口特征, 子程序指针, , "SetWindowLongA"
.参数 窗口句柄, 整数型
.参数 要置的特征, 整数型
.参数 新特征, 子程序指针
.DLL命令 API_执行窗口程序, 整数型, , "CallWindowProcA"
.参数 程序指针, 子程序指针
.参数 窗口句柄, 整数型
.参数 消息, 整数型
.参数 参数1, 整数型
.参数 参数2, 整数型
.DLL命令 API_发送消息, 整数型, "user32", "SendMessageA", , 调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum, ; SendMessageByString是该函数的“类型安全”声明形式 由具体的消息决定
.参数 窗口句柄, 整数型, , 要接收消息的那个窗口的句柄
.参数 信息值, 整数型, , 消息的标识符
.参数 参数一, 整数型, , 具体取决于消息
.参数 参数二, 整数型, , 具体取决于消息;
-------------------文本结尾-------------------
接着添加一些常量数据,同样粘贴到易语言中即可。
-------------------文本开头-------------------
.版本 2
.常量 WM_DESTROYCLIPBOARD, "775", , 当调用ENPTYCLIPBOARD函数时 发送此消息给剪贴板的所有者
.常量 WM_DRAWCLIPBOARD, "776", , 当剪贴板的内容变化时发送此消息给剪贴板观察链的第一个窗口;它允许用剪贴板观察窗口来
.常量 WM_CHANGECBCHAIN, "781", , 当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链的第一个窗口
-------------------文本结尾-------------------
接着到程序集中添加两个变量,同样的粘贴代码或者自己手动添加。
-------------------文本开头-------------------
.版本 2
.程序集变量 默认窗口程序, 子程序指针
.程序集变量 前一监视句柄, 整数型
-------------------文本结尾-------------------
在开始监视子程序下写上代码:
前一监视句柄 = API_监视剪贴板 (_启动窗口.取窗口句柄 ())
默认窗口程序 = API_置窗口特征 (_启动窗口.取窗口句柄 (), -4, &处理消息)
在停止监视子程序下写上代码:
API_置窗口特征 (_启动窗口.取窗口句柄 (), -4, 默认窗口程序)
API_停止监视剪贴板 (_启动窗口.取窗口句柄 (), 前一监视句柄)
OK,到这里就差不多做好了,需要用的时候调用“开始监视”和“停止监视”两个子程序即可。
接着是测试效果了,我们添加两个按钮,一个叫做“开始监视”,一个叫做“停止监视”,分别调用“开始监视”和“停止监视”两个子程序,然后调试运行,点击“开始监视”按钮。
这时我们随便找一些文本复制一下试试,我们会发现下面会调试输出“剪贴板内容变化”类似的文本,这就说明确实可以正常监视剪贴板了。
再点击“停止监视”,我们发现再去改变剪贴板的内容时不会继续弹出提示了。
版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/answer/135853.html