爱内涵论坛

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

易语言HOOK系统顶级窗口的创建销毁切换

[复制链接]

897

主题

952

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

金币
9855
巨币
6119
积分
37376

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

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

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

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

x
ShellHook是什么?当一个窗口创立、激活、封闭时,explorer总是能够捕捉相应的音讯,并更新义务栏上,就是经过ShellHook完成的。本课完成了对零碎一切顶级窗口的拦挡,和指定窗口的拦挡。
4 m& D, r1 ^2 M
: u- G2 C8 E. Y& t4 TRegisterWindowMessage  o- N6 H- v/ o: V5 \9 x  H, ^1 u
RegisterWindowMessage函数定义一个新的窗口音讯,保障该音讯在零碎范畴内是惟一的。通常调用SendMessage或许PostMessage函数时,能够应用该函数前往的音讯值。5 M& n* `  g$ A  O, ]9 M

0 v, z2 b0 a) J& {3 c" e3 V1 w正文:4 ~; O( T' l. ]# w- R( ]
RegisterWindowMessage函数通罕用于为两个协作应用顺序之间的通讯注销音讯。  若两个不同的应用顺序注销了相反的音讯字符串,则这两个应用顺序前往相反的音讯值。该音讯不断维持被注销形态,直到Windows会话完结。当多个应用顺序必需解决同一音讯时才应用RegisterWindowMessage函数。在一个窗口类范畴内发送公有音讯时,获取调配给一个字串标识符的音讯编号 &C000(49152) 到 &FFFF(65535)之间的一个音讯编号。零象征着出错。
9 g8 T3 u. v2 P- y' z% S* z4 k; ]2 W' ^
https://docs.microsoft.com/en-us ... isterwindowmessagea
3 y) U4 d: [4 f3 v字符串罕见有:
8 c# v4 o1 {$ e/ c2 v6 pTaskBarCreated 普通用于Explorer解体后的托盘图标重建
% O5 r2 q! ?8 K& n; X! GSHELLHOOK 配合RegisterShellHookWindow可用于拦挡零碎窗口创立等
5 y' H3 t/ _- o5 B- [TaskbarButtonCreated 在win7里的义务按钮创立
' `! Y- G$ Z! t0 H& ~; @" u; D1 C7 N, q4 i1 w0 y9 c
RegisterShellHookWindow2 W6 z9 F1 J$ o. w5 b, e4 k4 v( F
https://docs.microsoft.com/en-us ... stershellhookwindow
. ~, u  g+ o, x  Z2 u' x2 x* u
9 d* E/ z* S1 O! s* I3 ?( R开始拦截
  1. .版本 2: E$ W. Y# ~: N, l5 h+ Y" G

  2. ; `5 ?0 Z. |1 W2 r
  3. .子程序 开始拦截
    7 h7 ?  J7 S' F. O# ^. \
  4. 9 J7 v( W9 U) E! k5 l! V, d
  5. MsgNum = RegisterWindowMessage (“SHELLHOOK”)
    2 S" s( }7 G8 {! L# H$ `
  6. .如果真 (MsgNum = 0)7 V5 `, h. J7 W, z
  7.     信息框 (“注册shell hook 失败”, 0, , )
    . h8 V" F/ c! o( J" U6 f& K+ `
  8.     返回 ()
    % Q$ u" X& @3 K
  9. + p# t" j; P. A& _: V! `
  10. .如果真结束
    4 b9 s9 [- b* V1 d: K8 N4 H' G
  11. RegisterShellHookWindow (取窗口句柄 ())" {$ T5 S8 t( d- I" J
  12. ' 窗口子类化
      ^/ U0 X) T) m" e
  13. SetRet = SetWindowLong (取窗口句柄 (), -4, 到整数 (&NewProc))
复制代码
窗口子类化
  1. .版本 2
    # A: Z# _; `% C" C
  2. .支持库 iext5 [! [5 J6 `" H
  3. . Y; r; Y" i6 a2 F& ~7 L* c6 O
  4. .子程序 NewProc, 整数型
    5 O2 W; {# K; Z9 V) K
  5. .参数 Hwnd, , , 这个句柄是程序本身的句柄% e% N8 I. ~  x4 E
  6. .参数 uMsg, , , 用户的消息识别类型3 m7 m1 W: S2 d
  7. .参数 wParam, , , 事件类别2 D/ [! x, x7 ?! E- d+ W( T/ k
  8. .参数 lParam, , , 拦截的系统的窗口 的句柄) e: n8 Q0 e5 ^* m- p
  9. .局部变量 Tid
    9 r: Z: s6 w- Y
  10. .局部变量 i
    : X& {+ A/ M" O! I

  11. " h* h' a/ n4 k0 V! C" ~
  12. ' 只针对某一个特定顶级窗口hook' Z& n0 ^/ e4 S2 i
  13. .如果真 (lParam = 取指定窗口句柄 (“无标题 - 记事本”))1 f9 y5 y  \0 Z* L1 c; C. k0 [+ @. X
  14.     .判断开始 (wParam = 1)  ' 顶级窗口的创建’
    7 U% h% G7 M( b
  15.         GetWindowThreadProcessId (lParam, Tid)7 N2 M5 i: M" L! d5 V* N0 n2 b4 t  E
  16.         .如果真 (Tid ≠ 0)
    , v2 R4 U! `9 U+ d" _! z$ X
  17.             i = 超级列表框1.插入表项 (, “窗口创建”, , , , )
    9 U/ D2 Q  a: w& R& e* G
  18.             超级列表框1.置标题 (i, 1, 到文本 (lParam))/ z9 v0 [2 Y: y2 |6 @" d6 H2 F
  19.             超级列表框1.置标题 (i, 2, 到文本 (Tid))* {4 R9 h# a* o9 B0 s; z" ]8 `
  20.             超级列表框1.置标题 (i, 3, 到文本 (取指定窗口标题 (lParam)))" n+ n* T6 z( @7 o( `! B) n4 T
  21.             超级列表框1.保证显示 (i)
    - z6 y7 m( v; n5 C6 N; J9 V
  22. 7 r8 k3 L( |9 ]/ n
  23.         .如果真结束$ g' ^( j) j3 _7 v. y6 U8 b" d
  24. 8 k! f8 y$ U9 Z
  25.     .判断 (wParam = 2)  ' 顶级窗口的销毁’
    - ^" e9 e% H, r7 B0 U) L& J+ z
  26.         GetWindowThreadProcessId (lParam, Tid)  P% n- B; R' V6 ?
  27.         .如果真 (Tid ≠ 0)3 ^! y; ?3 d3 {
  28.             i = 超级列表框1.插入表项 (, “窗口销毁”, , , , )! G$ E# t- f$ v- s, v9 Z
  29.             超级列表框1.置标题 (i, 1, 到文本 (lParam))) T8 Y; |" ^. {/ T- {4 D/ x- U
  30.             超级列表框1.置标题 (i, 2, 到文本 (Tid))3 F; T( C8 @& h% m, o$ ]) f1 V
  31.             超级列表框1.置标题 (i, 3, 到文本 (取指定窗口标题 (lParam)))
    9 m; c- E2 h. j+ j# B
  32.             超级列表框1.保证显示 (i)& M4 s5 g3 J- h7 {4 \* j# M& y: E

  33. + v4 `, O- G! r" ~# ]
  34.         .如果真结束- y( N8 |/ X' z2 P, K" u

  35. 6 b$ D5 G5 v; `4 m
  36.     .判断 (wParam = 32772)  ' 顶级窗口切换0 |, W% S4 J( N3 T( Z$ U
  37.         GetWindowThreadProcessId (lParam, Tid). E* V6 n; U: Q! A
  38.         .如果真 (Tid ≠ 0)
    ( F  L; d# `% r
  39.             i = 超级列表框1.插入表项 (, “窗口切换”, , , , )$ @4 O. T8 \9 S
  40.             超级列表框1.置标题 (i, 1, 到文本 (lParam))
    / K! Q' d# p2 ^8 n
  41.             超级列表框1.置标题 (i, 2, 到文本 (Tid))
    - m( `4 b0 h! `! ^2 h: C
  42.             超级列表框1.置标题 (i, 3, 到文本 (取指定窗口标题 (lParam)))
    & P$ o- O" g! F& g  |$ u* b
  43.             超级列表框1.保证显示 (i)
    3 X, t8 E* h& l3 D; p# |8 V4 O

  44. * E, a; b- B% p5 g3 I7 N
  45.         .如果真结束4 [6 {( @7 Y8 j: G+ {, L8 I
  46. ) W0 C' j/ r  E, @1 O; p, E
  47.     .默认+ |0 C! z5 P& \
  48.     .判断结束' o) j2 K1 l2 |4 K
  49. .如果真结束. Z' T% Z' U/ n* o2 y
  50. 返回 (CallWindowProc (SetRet, Hwnd, uMsg, wParam, lParam))
复制代码
& I/ `% z1 P4 ]) p  r7 G+ ?

9 ~9 E2 B6 s. e* x* t
5 M' G% q5 Y/ z" H
5 w& ]* f. j9 t$ o6 O; ~
爱内涵论坛关注易语言与按键精灵的脚本辅助软件开发领域。                     VIP视频目录            VIP会员介绍            自助加入会员            联系客服加入会员            爱内涵免费①群            爱内涵免费②群            爱内涵免费③群
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2020-11-24 20:56 , Processed in 1.608846 second(s), 13 queries , Gzip On, File On.

Powered by Discuz! X3.3

© 2001-2020 爱内涵论坛

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