易语言调用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.禁止 = 真

运行结果:

总结

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

(0)

相关推荐

  • 易语言获取外网ip方法

    看内容会很失望,让人hurt的易语言,没办法帮别人看一个易语言的程序,要添加这个东西,其实这是我第一次接触,然后修改和写易语言的程序. 代码如下: .版本 2 .子程序 取外网IP, 文本型, 公开, 取外网IP .局部变量 原文, 文本型 .局部变量 过度, 文本型, , "0" .局部变量 IP, 文本型 原文 = 到文本 (彗星HTTP读文件 ("http://www.ip138.com/ip2city.asp")) 过度 = 分割文本 (原文, "

  • 易语言制作IP代理程序教学

    IP代理相信大家都比较了解,这里不废话了,这里用易语言制作的也是一个简单的IP代理,只能设置网页的代理,并不能进行全局的IP代理!IP通过网页进行获取! 1.打开易语言,新建windows窗口程序,简单做一个界面,这我们用一个超级列表框来显示获取到的IP 2.先看看采集IP的网址,这里选用快代理,好处就是自带了验证,所以写的软件就不带验证项了. 3.超级列表框设为报表,设置报表列,整行选择为真,显示格线为真! 4.因为用到正则,所以新建一个常量,用于存放匹配表达式,共进行了6处的匹配! 5.看代

  • 易语言开发ip查看程序教学

    易语言开发ip查看程序,打开就可以看到本机的外网地址. 1.打开易语言程序,在程序菜单选择新建 windows窗口程序,适当的点击程序边角放大程序界面. 2.在工作夹找到标题项,更改程序的标题为 "ip查看". 3.在点击窗口组件箱中的基本组件中编辑框按钮,在程序界面上点击,放到合适的位置. 4.在点击窗口组件箱中的基本组件中标签按钮,在程序界面上点击,放到合适的位置.在工作夹找到标题项,更改标签的标题为 "IP". 5.在工作夹下方点击程序,双击模块引用表,找到准

  • 易语言纯IP数据库查询代码实例

    以下是我们给大家分享了易语言IP数据库查询相关的内容代码,大家可以测试下 .版本 2 .支持库 spec .程序集 程序集1 .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码 _临时子程序 () ' 在初始化代码执行完毕后调用测试代码 返回 (0) ' 可以根据您的需要返回任意数值 .子程序 _临时子程序 ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中. ***注意不要修改本子程序的名称

  • 易语言破解WPS的VIP模版下载地址

    DLL命令表 .版本 2 .DLL命令 API下载文件, 整数型, "urlmon", "URLDownloadToFileA", , -下载文件 .参数 pcaller, 整数型 .参数 szurl, 文本型 .参数 szfilename, 文本型 .参数 dwreserved, 整数型 .参数 lpfncb, 整数型 常量数据表 .版本 2 .常量 id, "<文本长度: 21>", , "big":[{&qu

  • 易语言调用百度API获取IP归属地的代码

    常量据表 .版本 2 .常量 查ip地址, "<文本长度: 17>", , {"code":0,"data": 调用百度api获取ip归属地的代码 此功能需要加载精易模块5.6 .版本 2 .程序集 窗口程序集_启动窗口 .子程序 取IP归属地_百度API, 文本型, 公开 .参数 IP地址, 文本型 .局部变量 Json, 类_json .局部变量 返回数据, 文本型 .局部变量 地区, 文本型 CoInitialize (0) 返

  • 易语言将指定的主机名与IP地址转换功能

    这个功能要用到以下几个命令: 转换为主机名命令 转换为IP地址命令 将指定的主机名转换为其 IP 地址,或将指定的 IP 地址转换为其主机名,如果失败返回空文本. 例程: 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持.如果你想了解更多相关内容请查看下面相关链接

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

    DLL命令表 .版本 2 .DLL命令 加入剪贴板监视链_d, 整数型, "user32.dll", "SetClipboardViewer", 公开, 成功,返回值将标识剪贴板查看器链中的下一个窗口.如果出现错误或剪贴板查看器链中没有其他窗口,则返回值为空.( hwndNextViewer 将为 NULL.) .参数 窗口句柄, 整数型, , hwnd 加入剪切板监视链中窗口句柄 .DLL命令 设置窗口信息_d, 整数型, "user32",

  • C++ 编写DLL文件给易语言调用方法

    摸索了两天了,终于解决了所有问题,在此跟大家分享. 需要三个文件,dll_demo.h.dll_demo.cpp.dll_dome.def 直接上代码: 头文件如下: #ifndef _DLL_DEMO_H_ #define _DLL_DEMO_H_ #ifdef DLLDEMO_EXPORTS #define DLL_DEMO extern "C" __declspec(dllexport) #else #define DLL_DEMO extern "C" __

  • 易语言调用JS代码方法总结

    以下是我们易语言调用JS代码的步骤 步骤1: 步骤2: 步骤3: 步骤4: 以上就是四个详细步骤,感谢大家对我们的支持.

  • 易语言调用易模块的方法

    易模块就是,易语言前辈把一些函数.常用的子程序. 编辑起来,方便新手学习! 1.打开易语言,里面,窗口程序.控制程序.动态连接库.易语言模块. 这里面可以用到模块的有[窗口程序.控制程序.动态连接库.]易语言模块是编写易模块的程序. 2.我们就以窗口程序程序进行操作,点击进入[双击]. 进入设计面板,点击[程序],在点击[模块引用],然后[添加模块] 1.使用方法 添加完毕模块!最好先更新下模快引用信息,让语言兼容! 添加完毕模块!最好先更新下模快引用信息,让语言兼容! 2.在打开易语言模块信息

  • 详解易语言调用js实现md5加密方法

    易语言调用js需要用到拓展组件的脚本组件, 在窗口创建完毕的事件里给脚本组件初始化设置下脚本组件的语言属性,在这里以JScript为例: 脚本组件执行脚本的简单方法是:  脚本组件1.执行 ()  然后根据需要调用的脚本函数   脚本组件1.运行 () 首先看下脚本组件1.执行 () 的参数和返回值: 调用格式: 〈逻辑型〉 对象.执行 (文本型 脚本代码) - 脚本语言支持组件->脚本组件 英文名称:Execute 执行指定的代码文本.返回真为执行正常,返回假为出错,错误信息可以从"错误

  • 易语言调用百度文字识别api方法

    现在百度ai特别强大,很多大公司都是调用百度的数据,那么对于习惯易语言的我们改怎么操作呢?今天以百度ai文字识别为例. 首先打开百度ai平台 注册或登录百度账号,进入控制台,选择文字识别 新建应用,获取appid和app key 选择技术文档,api文档 参考第一个调用方式,通过url调用 要获取token请参考相关链接 然后根据参数说明填写相关代码,最后结果如下: .版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .子程序 _按钮1_被单击 .局

  • 易语言调用JS取随机数

    易语言自带的取随机数,取小范围的数字还行,大了就不行了,后面的根本取不到,所以我们需要借且JS来取随机数 1.启动易语言新建一个空白的程序或者模块都可以 2.双击界面,进入代码编辑,在代码界面新建一个子程序,修改为子程序_取随机数_JS 3.让鼠标指针放在上面,按回车添加2个整数型参数,分别命名为[起始值][终止值] 4.可以把公开勾上,这样可以复制到模块里面进行调用.第一个参数[起始值]设置为可空,如果没有传入参数,默认就是为0 5.添加其他JS代码,完成编写,纯代码在最后,直接复制到易语言界

  • 易语言调用MS SQL SERVER数据库方法

    Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output参数返回一个或多个值,返回一个记录集(recordset).无论哪一种情况,无论输入输出参数多复杂的存储过程,都可以在易语言中正确调用,准确的传入参数,并获取正确的输出数据.下面我(liigo)分多种情况介绍在易语言中调用MS SQL SERVER数据库存储过程的详细方法,使用数据库操作支持库(eD

  • 易语言调用模块图解教学

    易语言开发常常使用到模块的调用.为新手讲解一下如何调用模块 1.新建一个窗口程序_如图 2.界面添加 编辑框 与按钮 3.添加模块_如图 4.源码供参考  注: 加法运算为模块子程序 5.写好后编译,不会的看图参考 6.测试成功 [作者]:

  • 易语言调用模块和DLL的方法教学

    易语言是一门中文编程语言,虽然其功能已经非常完善,但是很多时候为了方便甚至有时候是必须调用一些模块和DLL文件,能够极大的提高编程效率.作为一个易语言新手不建议频繁的调用模块,这样不利于学习,但如何调用时必须得学会. 1.打开易语言,新建一个Windows桌面程序.本例以改变进度条颜色为例,在主窗口拖放一个"进度条"和"按钮"控件,如下图,"进度条"显示方式设置成成"连续"且位置改为50:"按钮"标题改为&

随机推荐