|
|
|
函数简介: 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.
4 T# }; g& P' O! [) q, I$ q6 s函数原型:0 V1 r. V0 {. ^$ ^' K
% V9 O% l7 i) l7 a8 P
long BindWindow(hwnd,display,mouse,keypad,mode)! [- L" v& I p4 ~; ?$ p
参数定义:
% r2 k. d; n* `! I O" U' h
6 _* K0 r4 o' B G$ K- _2 U* ^hwnd 整形数: 指定的窗口句柄
: M: T" }0 P( f* W) J# P [+ x, S. x9 ^1 N. s+ o; S; l6 f
display 字符串: 屏幕颜色获取方式 取值有以下几种
# _: g, j' g8 S" e; B! ^+ D8 n$ {2 a t
"normal" : 正常模式,平常我们用的前台截屏模式
3 {( G$ o8 k! j8 T1 n2 C4 ? g4 I2 f! \; }' ?7 _1 S
"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
3 H5 P7 i' R" K"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.
* h$ X9 R# F- q. ]+ c; x) g& Y. f! H& k3 v8 v
"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台.此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
# P2 ^) V3 R9 d8 U"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
# @9 B7 r ^7 M$ x1 g" k @: Q"dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx6 F; [; ^7 X) c6 x
* Y) t- {: X* B: M; C' J- v, P
" A+ O2 r. @9 k1 u. @8 N. R- j
mouse 字符串: 鼠标仿真模式 取值有以下几种
I( L" _9 G/ q( t: z1 b$ j
. G* Q3 _" a. K! B* d6 v1 z"normal" : 正常模式,平常我们用的前台鼠标模式8 [$ i! Y v& a$ H. O
+ w |% L7 L1 ~+ A+ t" r$ B"windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件.2 X$ K! B$ [( X6 `, l/ G
"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合. V( r( C% t. N# v: U7 I7 c
"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message"
' L. R, _: Y) L9 i" Z# m. T4 V3 k5 g
0 v }8 |- J6 B6 \
"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台.
& V: o+ m2 q7 |6 ~( k4 L1 w
3 q& k& g8 ^+ J5 d# Z; v1 D; e; m"dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合
1 K) b# P$ A- ^# h"dx.public.active.api|dx.public.active.message|dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.api|dx.mouse.state.message|dx.mouse.api|dx.mouse.focus.input.api|dx.mouse.focus.input.message|dx.mouse.clip.lock.api|dx.mouse.input.lock.api|dx.mouse.cursor"
7 G7 ~5 L( o9 ^/ n( _
7 `: X9 o% K4 V- Z+ C: G4 |3 i2 `, q+ ^ A; A8 i) O# w: ], b/ ]/ H# p' \
"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入.
# x& W* G* |! ^4 O4 j. _有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合
3 D& X: T" F/ \# }# X& T( e"dx.public.active.api|dx.public.active.message|dx.mouse.position.lock.api|dx.mouse.state.api|dx.mouse.api|dx.mouse.focus.input.api|dx.mouse.focus.input.message|dx.mouse.clip.lock.api|dx.mouse.input.lock.api| dx.mouse.cursor"! n6 Z1 e8 \0 J) U4 e* W
# X; h$ b' l3 P2 b
* N1 j3 p: b" a( T5 F% s% M v" ykeypad 字符串: 键盘仿真模式 取值有以下几种
1 [+ F* c. l6 f5 V3 a T% ~0 e {6 C2 B
"normal" : 正常模式,平常我们用的前台键盘模式
. h! q# z5 Q, t
8 P5 @4 n) w9 y: j"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.
% E9 c. ^# N5 ~0 B% c8 O# J {0 y$ o
8 B7 K4 q2 D; y& a. W"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合; q/ p h, B0 z% ^4 n+ y
"dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"
: {; l9 i9 l2 U+ N" r B N' C6 M. m3 v, H4 W
$ U1 [' u; t$ z" \
2 m: z, h( F) w7 d/ Q$ emode 整形数: 模式。 取值有以下几种 0 : 推荐模式此模式比较通用,而且后台效果是最好的. t: J' {+ a3 m' k
2 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. 注意0和2模式,当主绑定(第一个绑定同个窗口的对象)绑定成功后,那么调用主绑定的线程必须一致维持,否则线程一旦推出,对应的绑定也会消失.
4 V. P$ `* J# b- q3 B- J% T 101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用.
, F" V3 R" H( ~# l5 ^/ m 103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式. 2 H+ s3 O* A) c2 h7 U; T: i
2 _. t0 C8 ?5 q1 T$ T
11 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统
) r0 k9 S; g/ T1 E
G: W# l( x8 }3 ^) j# a 13 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统
( I3 R1 c; a, I需要注意的是: 模式101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把
: C/ b9 H, i/ }5 W1 U$ Y鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功.
?* I3 Y( k n* M# T# N: m* ]返回值:
9 x6 G% H% \; z5 }. W4 x3 n1 I整形数:
# t' ^; x4 G9 g$ _0: 失败
9 s) _' P9 \1 G1: 成功
' N0 g$ e; \- a0 v. x9 [5 t v" `9 {, \+ `
如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.7 x' D" X2 w& Q6 y
) G0 J8 h% ?: d$ U$ z6 V+ a
, h7 I! G) ]/ v7 }使用例子:
3 K6 k: D3 C0 I9 s+ J- _) E
0 n7 W9 m& i- }' {绑定失败的原因
) W' C% c& _! S+ I
! ]2 W9 H0 w) N" ?, K
7 t) I l; O2 v* b6 o& Y ?' k1 a9 Y* M# _+ i( L) R/ d- M( f% [" N1 ~
/ R* J' o: ?6 Q/ u. y# {, }9 m |
|