|
|
|
函数简介: 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.
- c3 C& m1 e- {函数原型:$ G9 o/ G4 K1 w
3 F- z/ x1 m q
long BindWindow(hwnd,display,mouse,keypad,mode). C- s. h( X4 H& V7 s E; J0 T% a0 `
参数定义:4 D( L: X/ l6 B* O _& }/ h
) b& k M0 b5 E3 z( vhwnd 整形数: 指定的窗口句柄
' X0 _( ?- x! C7 n! Q4 l7 }4 U9 ^4 u( a' _
display 字符串: 屏幕颜色获取方式 取值有以下几种' e! L# N6 d3 i, A( |- _7 G" G
7 { t& a8 e: e( F0 p# L) a* w8 T"normal" : 正常模式,平常我们用的前台截屏模式* h% T: Y3 O) v/ s2 ^. u
K: j% m; W8 w; p. {8 j6 [
"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
5 S& y* O) Y% j# @; |"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.% Q9 C( U4 @2 h) @- }2 g
# d% T6 R! k! d6 M$ n6 P" t"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台.此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。2 o4 w& S' ?; N
"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。) Y" _/ T7 E+ k5 T* a8 @' Y
"dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx7 _" Y5 k6 J9 @6 H9 K
6 W+ e, y1 D/ u' F( K* b7 o
8 ]2 e1 Q) ~# {5 t! Pmouse 字符串: 鼠标仿真模式 取值有以下几种
8 k, F: U, }& U0 `6 z& |- I1 k
N( x7 [' }- o8 d, h5 L6 i"normal" : 正常模式,平常我们用的前台鼠标模式
, [0 w" i( c6 c0 B! h T8 h
% a7 b: b5 b8 }9 l"windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件.
# a/ C: j _6 C"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合+ x* Y$ ?& b. k3 ?8 g; W- E
"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message"
9 Y8 C/ {! K5 @" K! N
4 C. Z4 N8 e( M: ]; E/ P% O8 K
- P8 T7 T+ z8 o"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台.- u( Q/ W8 Z. b
, \1 u& ]8 ~& V0 f6 ?"dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合# r# l: @! {- S% R* P# ~; U
"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"1 |8 z2 x% N1 N- x! O& ]
! n$ A$ h5 a& a V8 _
1 h$ t6 [3 B6 w2 @
"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入.
) k7 Q {0 N, t3 R. [有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合
: v* s+ D4 x& W, B8 s% l( C"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"
z) H7 Z. O$ d; J6 Y7 }- J5 A% S. V3 M5 \' Z) P9 v
7 B* a/ ^$ U# e/ w3 e
keypad 字符串: 键盘仿真模式 取值有以下几种
4 P2 s& J4 m8 j* F! o! w* n6 r: A; O4 m
"normal" : 正常模式,平常我们用的前台键盘模式
/ j9 z' p; Y, m; B0 E& T- l6 f
% M6 @! }8 Z) m"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.; y8 k/ _5 s* H9 T" ~5 p9 U
* p& W6 C) x* h, C$ J e( ^1 Y
"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合/ L% t; e1 v7 m, P( T' O7 b7 u
"dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"; @1 k+ i% _' A! y) W
2 \. g# q# z4 L: A m. x4 P8 B
0 j2 x- y- b" }8 @$ U
8 ?( `/ P5 v7 }9 } ~5 R( C7 rmode 整形数: 模式。 取值有以下几种 0 : 推荐模式此模式比较通用,而且后台效果是最好的., n E9 D" |$ N; M8 s; E
2 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. 注意0和2模式,当主绑定(第一个绑定同个窗口的对象)绑定成功后,那么调用主绑定的线程必须一致维持,否则线程一旦推出,对应的绑定也会消失.: v0 K* i: p; A1 J) O8 V7 @5 v/ p
101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用.7 H. y$ I9 Z5 `& q9 M& n
103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式. : }) X: p& f) J7 }) q8 i
& n! C |5 x1 v& i+ y7 W( g
11 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统
& G) _2 K% S. k- H
5 S: E" X0 {- H' Q2 g7 k! R 13 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统
$ }/ T0 A2 l7 l4 ~, `- }需要注意的是: 模式101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把
! p7 `0 S V d, z鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功.; c- K* S$ \) A! h
返回值:
3 Q6 d& }( Q8 O8 F/ ~整形数:3 D7 W! a I' `1 V( G p
0: 失败
' L2 @ c' M e4 J! J8 R1 [1: 成功/ u. ?$ e# v* S/ U- ?
# {8 R$ m9 P4 Q7 x
如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.
! Y, U. Q# p# i# d' N6 `2 F. T- Y7 a4 M. D
O, d+ t! B2 Z3 e3 u, Y2 ~! p
使用例子:
. s( L* S: I1 O' B0 ~: E6 }& j* P
% S# a6 J! d! P: x5 |; T$ Z
绑定失败的原因4 }" a4 P' S, S
6 U2 s7 ~# z- \. o
/ q; N4 g( K- x8 k' y6 \' F) J- d9 N3 A. F4 P p+ L. `/ h( P
& V8 Z' w# N" e0 M
|
|