|
|
|
函数简介: 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.- e9 I$ P- A" K4 e
函数原型:
: b6 B# ^& K& @+ C
5 l ^. k r- G6 Z* {! E7 ]3 N2 Elong BindWindow(hwnd,display,mouse,keypad,mode)$ |% M/ z" _' }/ A K0 g2 R% Y( y4 W
参数定义:
5 r9 [" P% f1 T
V, k7 ^# q; y2 Ahwnd 整形数: 指定的窗口句柄, V% M3 ]8 f3 Q b
- A6 } _3 W3 l5 g: D; ]
display 字符串: 屏幕颜色获取方式 取值有以下几种; A- R+ D- b6 i$ ?5 o$ N/ y/ \! m: F
& q! _; @( ?8 T"normal" : 正常模式,平常我们用的前台截屏模式. D5 U" e) y6 k1 E8 ^/ L% P6 f
' z% \* A; O3 f9 `& C- A"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
( C+ F3 {% _' m* |+ I; O"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式." f* G# Z! U# d" M+ D4 L& D6 U& t
! A. a2 E% V: y# ~0 ~0 R6 @! B& a) t
"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台.此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。% |. N* Y# r" c. r, z4 q. P
"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
; K& L. u4 X7 B) a. h( J! \3 Y"dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx1 b5 J5 e" w' |$ i5 x% U
: |8 a! H6 F2 A1 R6 q
4 C% [ D6 `( @7 Y2 i! fmouse 字符串: 鼠标仿真模式 取值有以下几种2 {$ S% l2 m0 O6 O, p
0 Z4 B% m7 l7 p) C/ X6 O4 l/ E"normal" : 正常模式,平常我们用的前台鼠标模式+ {4 e- o }5 F: n# K* x. }
! l/ d+ G6 F! ~0 R# B5 F7 }
"windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件.
e- y+ R7 `, E/ x+ N* i"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合
2 [" e; y8 c5 n"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message"
, ?$ N0 j s) n c* {/ k$ J& T1 @$ H, }% O# X8 f6 N
$ A5 d! N& K: y! |. F0 X
"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台.7 j; `: g) x0 ^: \
; y7 n- D+ Z8 K. U1 ~"dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合
* T s2 Q/ h( ?8 \, N"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", [/ B, P! I! i3 }/ k9 e
0 Y$ d. {7 ?0 d& O, K/ G& h2 u2 X0 ~
) I- R% Y7 y) X+ T
"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入.
- `7 D) e, O2 L. x5 w( l! B有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合
1 L- a: F/ _( j( \"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"
2 Z- ~2 r1 |+ T/ J6 i' Y2 H: m+ [# I% |" D
7 M6 ^+ V' Q! J3 V& x% ~keypad 字符串: 键盘仿真模式 取值有以下几种 j- D! }% c2 i7 r5 e" g
4 @8 b, g3 P3 x9 a1 p0 U4 }' [
"normal" : 正常模式,平常我们用的前台键盘模式2 m2 k: M4 J) y: c
' }/ x0 i- P: K"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.
; G1 e9 U9 Z& [- t* z" j! ?# w$ f3 ]% E' X
"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合
! f+ K8 r) v a& F0 g1 c"dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"/ Z0 {) E9 I6 T; ]0 h8 \
" U% w0 f( K9 h, V0 O \. V- r
& \' j2 _, e0 d% r
- n& f! N3 E; F: F
mode 整形数: 模式。 取值有以下几种 0 : 推荐模式此模式比较通用,而且后台效果是最好的.3 p0 W# p @. z' _; C
2 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. 注意0和2模式,当主绑定(第一个绑定同个窗口的对象)绑定成功后,那么调用主绑定的线程必须一致维持,否则线程一旦推出,对应的绑定也会消失., C+ Z- O h. \1 J
101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用.4 h: u. u% l, x
103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式. * ?8 g; h5 f6 n1 |# g
3 B6 B; A4 J1 b! X5 b
11 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统 ], w' `% O; g6 u/ x1 R( ~! H. ?
, w- i% `2 p, ?; n3 I
13 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统1 V# ^& ^# t8 b" }# a, j/ x
需要注意的是: 模式101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把
$ A5 g9 M0 U% s* Y- _$ h鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功.3 d. y1 i* ^: _; d. U; L3 L* w
返回值:# _3 e* }0 l* Z. S6 L
整形数:
* K) O& d2 _# E c5 B+ b2 }0: 失败
+ _ o" c, R" b' R0 c1: 成功" V: u7 D% G1 s2 i0 ~. Y9 {
# R {. p; i* i( F, i2 [1 Y如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.0 s5 j# m5 L! x
% u5 y4 E8 L" H( V. d' w* {% ]- w0 s3 h3 C) G4 @2 w+ N
使用例子:& n+ I- u" ~% q' x1 @7 j: P8 S( p6 _ S
6 j- b( F/ b9 \. m( C
绑定失败的原因
% p3 ^# B: N% {# e; c& b
* e5 m; |: Z6 }( b8 _8 j+ o+ @! e/ Q/ V: E7 X& B: F
5 N. |. @/ a2 b3 g( j7 Q# @" W8 |
* H# u. E) ^- K |
|