|
函数简介: 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.
1 [( w( B% l3 [, P- R函数原型:
- X# x) }. N" c) o/ n/ Q U: _
long BindWindow(hwnd,display,mouse,keypad,mode)
: a, h" m0 E( Q5 Z- Z( Y参数定义:
+ R& [3 [2 ]6 Y2 x1 r0 M, g+ ?* H
- O$ i& I# K0 V( i- Ahwnd 整形数: 指定的窗口句柄9 X% D" U/ n& Y# U- |# w# a0 _
: b) y; |5 q) e2 i) s
display 字符串: 屏幕颜色获取方式 取值有以下几种, D! [. \7 ^( z& J( i, ?
9 z4 c+ j7 l6 a' ~' e
"normal" : 正常模式,平常我们用的前台截屏模式
3 {: k+ K- J( O; m3 l4 F, Z; a) Z/ B, [4 a/ u/ c: i
"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
2 s1 e0 P- w4 z"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.
! Z" Z+ ^0 u' Q* E; ~9 Y# h4 q2 {7 r2 m
"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台.此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。$ w1 j; G& O* W# B$ L; ^" E
"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
2 r, |4 S& m7 O5 K# z"dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx
+ U" o* \# J. a4 \6 m2 J& v$ Y& C% z
8 ?8 ` b1 _8 A; u2 Q1 x3 wmouse 字符串: 鼠标仿真模式 取值有以下几种. D' R7 i% ^+ w! y* {( X" O
+ Y- ] n$ N6 k) f8 o! Y) q
"normal" : 正常模式,平常我们用的前台鼠标模式
$ s2 M& u0 M% C O/ R9 T9 [) I3 y' n
"windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件.4 I# Z- A: R' v- J1 T+ L
"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合
/ w; T3 Q, q0 J d! r! z- c V+ v"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message"' t& V \8 E, Y6 }1 W
$ ?) R" c* v n
& c- p& t: w- P$ r"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台.
7 T0 x. Z/ V" v+ f8 u' B, G
! V- T' i/ u- ^; }7 p"dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合) b! ?: c. ^7 H4 {- a, f& @: M
"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"8 t) b! u8 i5 Y6 W# I" P; V
8 Y* k6 l" F7 Z: A
; u1 r/ Z. g, k. I"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入. }5 [& @, N' H
有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合; H# p: {6 O" A4 T
"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 M' f( k0 K& {
6 _# F2 Y( W: J1 d# W- B9 u L/ Z# k6 k+ h$ @
keypad 字符串: 键盘仿真模式 取值有以下几种
, z) F" x% L) l1 ]4 d6 C7 |
5 O7 s! E0 j' D a5 j1 X e( O"normal" : 正常模式,平常我们用的前台键盘模式
5 J6 s; S- `9 ?9 p
/ F4 z- w# ?3 y1 \9 K& i3 `"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.
: i5 m: k( i! _2 q$ O: A
9 m4 @9 `7 w' e7 G) V! m8 Z' S7 \, u$ P"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合
6 Y" H# t" f4 J; C6 d6 C"dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"
2 _/ X F' K- g3 h P- U% M3 q) D. Z! n! f
$ C' T: k6 V# }8 T( L, p. y4 V
: {5 [% H6 h4 u0 a' \ r9 \) R4 fmode 整形数: 模式。 取值有以下几种 0 : 推荐模式此模式比较通用,而且后台效果是最好的.
% `# ^- A% P! d 2 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. 注意0和2模式,当主绑定(第一个绑定同个窗口的对象)绑定成功后,那么调用主绑定的线程必须一致维持,否则线程一旦推出,对应的绑定也会消失.
1 L1 t! ]" B) X& K) V* ?' H 101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用.
- k1 x; x8 }( ~. l 103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式. @& ]0 h' w* @9 p/ z: G! P, {/ B
& o) W) f; U) A; V% n* l
11 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统# {$ l2 o* W' s* x" \( |; U1 u ^ q
) P! b) O# @9 a4 l+ u7 s
13 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统9 J" u3 \0 w, u1 e: l; O
需要注意的是: 模式101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把) v6 H( w {6 G% _ j
鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功.
) F8 \6 e3 q/ h, n3 m# Z6 L% O返回值: f6 k5 d3 Q! O$ V. }9 e. v; a: S
整形数:5 I1 c3 R$ m; [5 A0 {
0: 失败
$ E. l3 D H0 O; J, r# K3 w1: 成功8 C$ W3 W$ w' r- p0 {7 H) C
" |5 K' a0 [& E3 f$ ~+ f: b如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.; V3 A5 w# m; @3 d
h6 v% p& X, N1 ]- p( y- O
; b2 u+ _/ T- F# U
使用例子:
+ Q. [: }+ F' \5 I, a
: ] m; e( R$ t6 ]* z# |
绑定失败的原因5 D) t" a/ M2 i a; D: ~; x
3 @' t+ j1 N+ B0 K7 `) j& b
" A3 {! H/ C1 P
, P( f: i, D5 t1 J5 o1 c( i
5 o9 C8 L4 n( K/ m5 V& C5 R
|
|