|
|
|
函数简介: 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.
2 Y: q/ o( }6 ^- ^函数原型:
+ @) l2 R1 b6 Q% I& N
0 O: W \0 D0 J7 _0 Zlong BindWindow(hwnd,display,mouse,keypad,mode); V2 a. C g5 b
参数定义:
. {1 f. f: g% b: J" j4 x
. n* r0 }3 L% Y9 |hwnd 整形数: 指定的窗口句柄
2 _9 U2 r2 h, B7 Q7 x- a- F$ l3 L; V5 O' O. g- v# p
display 字符串: 屏幕颜色获取方式 取值有以下几种
* B+ f) _# _8 F' e/ V1 a2 D
$ a8 H& a+ A, k& }+ `1 ?"normal" : 正常模式,平常我们用的前台截屏模式. m7 _3 v3 Q9 P7 x4 ~( w. f4 j H
% ~; P/ M5 X9 j8 v$ y+ J/ Y"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。( {7 s; ^1 F9 `2 `8 B/ @6 u
"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.
/ ]7 H! A3 l$ e( e
+ x3 l+ L( S1 |"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台.此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。' f- l5 }" ~ D1 D
"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
: s; P4 I" }4 k$ \" j6 a"dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx9 ?- O, N; z& W' ]! c. w) y
% u( M" O4 E; t6 a; o) ~
7 s6 a0 f! ?& J% {, A
mouse 字符串: 鼠标仿真模式 取值有以下几种
2 U V! F: o1 ^; Q9 L' Q/ @* B
* \9 h+ Z) J( G/ J P& e7 U"normal" : 正常模式,平常我们用的前台鼠标模式) f3 m: Z3 e: _+ D! Y, K
_$ P) }, h" S0 ?# G! v
"windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件. D' v! a3 s1 E& _' g! O
"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合* V6 z4 b4 X# g4 k7 ~
"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message"% n- M. q8 I' y9 T- g- @" T
U2 w, R+ g, A8 P2 w0 E4 V+ m- y5 i* C' d+ f
"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台.
' D6 s1 a7 U( B: T
5 b$ {# ?6 E. x8 U"dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合
# o7 t3 u4 S+ i"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 u4 d# n7 v( s* b8 V
* F' P/ ?4 v" g6 L6 |: @8 I% k4 r3 _9 K$ h* }
"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入.
+ K7 b( d! l' N: C" }; p有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合* l9 X @. l6 w( 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"$ x& D1 I* I3 P8 Z2 t/ z ?0 H
8 g+ P, [8 A" L, I- @& Z& W1 H: S8 u' {8 }+ Y6 o
keypad 字符串: 键盘仿真模式 取值有以下几种
! Q, T& B+ ]% e
5 g& h) q7 Y1 h+ X* Z) U"normal" : 正常模式,平常我们用的前台键盘模式% p& K; M8 a" D* Z$ i! q
* i( O) B# _1 u4 H"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.
& I* K: W+ z5 L7 b" h0 e# r4 D- A% J) n" W9 l
"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合4 O8 Q3 y" U+ H+ d
"dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"
/ B V3 T2 k. R* E& \9 s4 X, ?8 E8 [! c' Z+ A2 Z3 j% W; J( ~ |9 x
! w* r, e5 j! X* W& s4 P
9 ~. B2 }2 H1 X1 _$ ymode 整形数: 模式。 取值有以下几种 0 : 推荐模式此模式比较通用,而且后台效果是最好的.
" }8 b4 Q2 K+ R1 M 2 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. 注意0和2模式,当主绑定(第一个绑定同个窗口的对象)绑定成功后,那么调用主绑定的线程必须一致维持,否则线程一旦推出,对应的绑定也会消失.
" x- ~. l9 S0 `2 r, Y, ?: t, p 101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用.
% B0 n. u2 `1 E6 `# r6 n 103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式. % v& P# T) k) J% z
4 u& Y+ h. }$ F" A" e7 Y 11 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统
( v$ Z- K5 h) n
2 E, n$ t; I5 m# G& [ 13 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统
- j5 X( d2 m* P+ U B2 a需要注意的是: 模式101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把7 g1 }* |$ n) T- h4 j' W8 b+ l0 S
鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功.4 O1 O" t7 H+ _7 d4 l! V$ S* }/ O+ {
返回值:
% @7 k5 x; C1 A% y* l整形数:1 W8 o) f& e7 q- q
0: 失败
5 X' h1 n+ F6 C( y# T1: 成功
( O7 @9 n7 m& h! e2 _/ G+ B$ ?: c1 S V6 w( S2 s6 A8 K. K6 Z
如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.
3 F) H5 |6 q& J4 e. ~8 Q7 h1 T" x* p: t' ~
: f3 I, M7 w5 j( H: v
使用例子:
% Q0 U/ O( l# ~' A
* _! L# T: S5 P: R# u绑定失败的原因
" j$ W2 z# ^7 j- k+ k; P8 q9 n- Z
" a! e. F! g/ v, p! R( K- _
3 s* N& {7 ]/ [9 A# F, A
" L* D- c# Y2 Z4 u5 v+ ~, ? T/ I4 o# [1 g/ [/ M8 A
|
|