爱内涵论坛

 找回密码
 立即注册
搜索
查看: 441|回复: 0

易语言通过消息全局钩子截获外部窗口消息

[复制链接]

908

主题

963

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

金币
9855
巨币
6169
积分
37416

2019年众筹小组s2019年众筹小组ss2019年众筹小组sss

发表于 2019-8-30 20:08:53 | 显示全部楼层 |阅读模式

马上注册,获取更多精彩内容!!!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
开始截获
  1. .版本 2
    7 F% ?6 L) V: I0 Y9 c
  2. 1 I( _& C  J; l  H
  3. .子程序 开始截获, 逻辑型8 u' h: V$ p, K6 Z, x+ _2 P, v/ r
  4. .参数 窗口句柄
      F" ^' O" c$ o' e0 S" V
  5. .局部变量 hmod, 整数型
    / u- ?! L" K' `; o1 P' ^! q9 z
  6. .局部变量 lpProc, 子程序指针7 e0 ?  _# e! N% E5 i6 e2 z7 c. e/ ^
  7. .局部变量 ThreadID, 整数型
    * \* n( S& k1 O# T
  8. .局部变量 hHook, 整数型
    7 D2 J( Y! k- H6 N! b9 |5 a

  9. ! ~( W% H' P4 R$ e
  10. .如果真 (窗口句柄 = 0)
    : y5 D' R; M3 |/ S" p( m
  11.     返回 (假)
    + ?' l- q9 _' A2 P2 \5 ?# U/ b
  12. .如果真结束3 ?6 i9 n  k/ m/ H" y6 J0 r
  13. .如果真 (GetPropA (窗口句柄, #prop) ≠ 0)
    3 f' S  Z  f7 t5 K
  14.     ' 不等于0说明已经加载过钩子了- |) `' \2 L: t6 n
  15.     返回 (假)) x( ^5 g/ K9 W/ l1 X
  16. .如果真结束
    & N7 Z9 Q6 C$ P& X6 e% O: I7 ?
  17. ' 第一步  获取 Hookdll的 句柄
    ' X* S' I9 x. O. K+ C8 A
  18. hmod = LoadLibraryA (取运行目录 () + “\msghook.dll”)# B6 `, V" R' u/ N% S
  19. ' 第二步  获取GetMsgProc 这个回调函数的 指针
    8 K$ k; i1 }5 e' ]$ u
  20. lpProc = GetProcAddress (hmod, “GetMsgProc”)
    7 u" o+ r7 H) R
  21. ' 第三部 获取截获窗口的线程ID
    2 t' D% ^1 {, V
  22. ThreadID = GetWindowThreadProcessId (窗口句柄, 0)' B/ @2 e7 y" d3 f" w3 g, a+ e; I
  23. ' 给指定的窗口安装消息钩子,该窗口在收到postMessage的消息后会自动加载钩子函数所在的DLLmsghook.dll
    . I7 W) \) f) `# R% m
  24. hHook = SetWindowsHookExA (#WH_GETMESSAGE, lpProc, hmod, ThreadID)( K3 U1 n4 o; n. y+ R7 _0 x
  25. ' 释放dll
    9 J8 v' c6 R: a. K7 X* d
  26. FreeLibrary (hmod)& N. w2 W; a. K/ @$ j. A5 M- J
  27. ' 开始给窗口发送消息,通知msghook.dll子类化窗口过程,并传递钩子句柄过去
    $ _) a& U. Y( s' i
  28. PostMessageA (窗口句柄, #MyMsgClass, 1, hHook)% k" x8 C4 Z' G; N8 B3 n8 p
  29. 返回 (hHook ≠ 0)
复制代码
- Q& @* {0 ~/ b5 v, J

, S6 _, l( c- j# y% w* S结束截获
  1. .版本 2
    * g" ?8 L1 z; b" e1 l! F2 d& \
  2. : ?' Z) H' b) n" E( C, o& h
  3. .子程序 结束截获, 逻辑型
    / d7 Z+ W6 N3 n% j; [: U3 C1 a
  4. .参数 窗口句柄, 整数型6 P! a, z7 l$ G; \0 D; c& s
  5. .局部变量 hHOOK, 整数型, l3 p8 ]  G" k( o$ o1 }

  6. 8 _+ k3 a8 w3 c* c! [) ~
  7. .如果 (窗口句柄 = 0)
    * x% P# G; n0 w$ q# _
  8.     返回 (假)
      m2 P/ N8 H& ~0 P& h
  9. .否则( s4 v4 M5 v# c& g4 A/ B$ \4 ~9 ]

  10. 9 A  G( R/ {7 g; v
  11. .如果结束
    # L6 N( ]% X3 n+ m1 d1 v- J
  12. ' 取回钩子的句柄5 U# F2 a7 R3 Y$ d) g
  13. hHOOK = SendMessageA (窗口句柄, #MyMsgClassHook, 0, 0)8 i; K: {" K& y) |4 V- N5 S& T
  14. .如果真 (hHOOK = 0)
    . g0 d; l( v; Q0 {
  15.     ' 0说明窗口已经关闭了
    6 H+ t2 K  e; K# g
  16.     返回 (真)1 i& k1 {4 O1 C1 Y
  17. .如果真结束
    : ?( R$ N/ H% J9 {; ~
  18. ' 通知窗口截获结束,恢复窗口过程
    ' n" u8 w8 S0 L
  19. SendMessageA (窗口句柄, #MyMsgClass, 0, 0)
    & w4 f& i. \/ M2 x/ y
  20. 返回 (UnhookWindowsHookEx (hHOOK))
复制代码
& ^3 X+ E0 s( B$ U
3 t8 C2 ^( i0 X; A- }4 L
主程序调用开始截获
  1. .版本 2
    7 X6 _2 O; `( j# T, m2 {3 r4 L4 v& O
  2. 8 u2 k( l5 [  k) B
  3. .程序集 窗口程序集_启动窗口
    ! {* S2 o1 s; L

  4. - K" L  G: W" \# S) W
  5. .子程序 _按钮1_被单击' f+ W1 M1 ^2 F' p! t
  6. .局部变量 hwnd
    3 L& j! W7 w: B6 n  [7 z) j
  7. ' W0 {: Z' R6 H
  8. hwnd = 取指定窗口句柄 (“无标题 - 记事本”)
    - y3 B$ T  r5 Z9 F) [3 y
  9. .如果真 (hwnd = 0)# y" ^9 p- G8 m! Z$ W7 O
  10. 信息框 (“请打开一个空白记事本”, 0, , )/ w# ?' ^9 l/ l0 V
  11. 返回 ()9 p% Z3 D# h& M6 H$ e

  12. " ^$ F/ Q- h/ l  ]& V* N8 y3 m0 V5 ^
  13. .如果真结束7 ]! D) G8 b0 W- G& f- _
  14. .如果真 (开始截获 (hwnd))4 |" i  d+ ?6 b
  15. 信息框 (“开始截获消息”, 0, , “成功”)3 E* ~& w# ?6 ^( Z' X; g
  16. .如果真结束
    1 f1 G  F( H1 {" l8 G

  17. 7 _5 q3 I( }. |" g- E, i
  18. .子程序 _按钮2_被单击
    6 L* L; |( B; U: R6 y# J' f
  19. 结束截获 (取指定窗口句柄 (“无标题 - 记事本”))& S+ w4 W# h- E' s, [& r
  20. .子程序 取指定窗口句柄, 整数型
    9 J6 C7 L2 C( k
  21. .参数 窗口标题, 文本型
    8 c  x1 `) L( W) \4 o
  22. 返回 (FindWindowA (字符 (0), 窗口标题))
    2 z) _1 z. y( s( V) G9 C  F
  23. .子程序 __启动窗口_将被销毁4 o4 @8 K" J5 P& Q' S, `

  24. 4 ?  `$ N9 ?3 m# j* }! q
  25. 结束截获 (取指定窗口句柄 (“无标题 - 记事本”))
复制代码
4 O; @( R! c& n, u9 S
7 n. I8 C, X' s/ ?6 |

. {5 r0 s3 v& M# d' M+ ^
( E& p* H, F& W% Z  }
+ ]( k: d( A2 O, r7 B/ ?- ^+ k
爱内涵论坛关注易语言与按键精灵的脚本辅助软件开发领域。                     VIP视频目录            VIP会员介绍            自助加入会员            联系客服加入会员            爱内涵免费①群            爱内涵免费②群            爱内涵免费③群
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|爱内涵论坛 ( 浙ICP备19016710号-3

GMT+8, 2020-11-29 15:31 , Processed in 0.392020 second(s), 13 queries , Gzip On, File On.

Powered by Discuz! X3.3

© 2001-2020 爱内涵论坛

快速回复 返回顶部 返回列表