|
|
|
函数简介: 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.; V$ N9 o5 v0 B; K! [
函数原型:
, t$ N, v; \8 N/ ]
6 X" P/ a5 A+ r# S, @# slong BindWindow(hwnd,display,mouse,keypad,mode)
' J7 B1 h! B; `! C8 E( L参数定义:* S1 H, X( j: Q
' D, c, H. I8 g- Qhwnd 整形数: 指定的窗口句柄
2 \2 h! ^' m0 c# J+ j/ O, l1 f) A- b8 E( a. T8 ~9 g; o! d
display 字符串: 屏幕颜色获取方式 取值有以下几种0 H5 w+ i# E$ d$ k6 x: c; E
: ~3 B# ?3 E7 q1 M% ~' @+ T% G"normal" : 正常模式,平常我们用的前台截屏模式
9 e0 J. F! g* J$ a: M, r2 f$ d7 D0 a5 B5 ]* j" ~* n
"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。) a9 h. H( U* y3 D7 }, c. l
"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.
3 x( j1 O9 P$ O! F1 q7 B
- }0 E2 o* j& C" N$ b. n/ c"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台.此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。0 b! O6 b8 f8 B
"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
2 b8 Q+ n+ ]: Y8 e$ P( y"dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx
' E1 Y q" E( E5 J$ Q2 _
% X1 R* G% ]/ @7 M$ J0 V5 v, S: T
) {2 D1 U5 c* W9 gmouse 字符串: 鼠标仿真模式 取值有以下几种5 i3 O3 y9 v0 M8 ^
) K: J. k0 f- t: W; }, T
"normal" : 正常模式,平常我们用的前台鼠标模式; A& M7 n4 _3 A8 J2 }7 w/ S
0 ]& a4 M" m8 e"windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件.; ?( s8 M6 }5 g6 j- _% e
"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合
0 U. k& h# Z$ o4 \# G; m"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message") s: ~ ~) _' N {/ Y: _
8 i1 T9 v' l2 F) p7 }9 H9 V$ [0 `5 z% I5 c" ]6 {* O
"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台.+ q. C; c: l' z z5 {# t/ F# i# t
9 @/ ?( o$ T" c3 M( i/ N
"dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合" u8 f# f1 a: S( R5 w
"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", Y* y( k c, n& Z8 r/ v* l
0 q1 r( b, Q# g, |" Z t
7 O" K/ ?; R4 Y! ^/ T; u5 c G
"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入.4 `+ F) P5 a5 D4 T' {
有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合$ }' x& A' t' S% }6 z2 N1 D
"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"
5 r. F! `' F" H; c7 ^: }4 j/ ~
+ t& E3 Q, b) u; e) P) N( w6 |9 K' _0 x, _$ k/ A* M
keypad 字符串: 键盘仿真模式 取值有以下几种
5 X; m5 c+ W& Q% S1 V
0 l( Q+ q6 ~$ f) }' D"normal" : 正常模式,平常我们用的前台键盘模式
/ j3 x5 k4 U; i8 u/ Z' s
2 y( j- R0 y* m"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.
) u5 J( E. G7 e: s0 a; q+ f
$ ?$ |. O5 s8 _' K"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合; ~0 U6 M4 K% X; s
"dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"1 h( o$ u. V2 H& y( C+ q9 y) t
$ x/ }9 [' o! ~' n2 K8 C
) o' G, y2 e9 y. q0 z; ^* {, |
8 o9 ~" d: ^; t; y$ P. {mode 整形数: 模式。 取值有以下几种 0 : 推荐模式此模式比较通用,而且后台效果是最好的.
5 D" i; Q; T' u/ g" B 2 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. 注意0和2模式,当主绑定(第一个绑定同个窗口的对象)绑定成功后,那么调用主绑定的线程必须一致维持,否则线程一旦推出,对应的绑定也会消失.
/ u7 h6 l* } j! _ 101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用.2 o4 B5 a) Q5 x2 |3 I2 h
103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式. % V+ a9 ]' F: v0 `9 c$ i
7 v) r) q3 s: W
11 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统* }' I" Z+ Q [6 r6 B3 Q( C# ^8 S
, ]* k/ ~! S( c- `% h" l9 x% d 13 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统
9 ]9 y5 [ f% ?& V" H# G需要注意的是: 模式101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把
% u1 s. M! \% J6 W; u" x鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功.* S( q# F6 v/ G9 ~+ n
返回值:
! F* n7 u$ {0 L0 ^# H整形数:
5 N* s6 t$ ^# I! T0: 失败
' {# z- b: O, L, S; ]1: 成功. Q9 x& x4 _# {2 m2 ]; K3 W' b: B
3 l" J* E( t2 A; C$ f3 {* ^9 i
如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.% b h' w; e0 t
$ l9 w2 s+ o$ }8 R* ~5 A1 C. M# { R
使用例子:
; C( | U; _- v$ U5 g7 Q
8 @8 |" z$ S8 c9 W: m1 [绑定失败的原因- O3 P( R8 N/ d7 Q, \6 g
& G+ h5 Z) J+ K& w" R
8 }% I4 k8 `5 m8 h% |: X; @7 H i! D
: D9 ?7 u- [7 U- h- g
|
|