服务器之家

服务器之家 > 正文

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

时间:2022-02-21 16:33     来源/作者:易语言源码教程

DLL命令表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.版本 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 的返回值

监视剪贴板的代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
.版本 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.禁止 = 真

运行结果:

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

总结

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

相关文章

热门资讯

蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
2022年最旺的微信头像大全 微信头像2022年最新版图片
2022年最旺的微信头像大全 微信头像2022年最新版图片 2022-01-10
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
返回顶部