|
|
|
函数简介: 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.
/ j3 X9 L/ ?- }3 D0 t" [- [8 Z7 q# |函数原型: m5 t0 n$ J T) K" V+ h" h. \
3 S/ G4 I- S/ t9 M6 v/ x& t
long BindWindow(hwnd,display,mouse,keypad,mode)
8 i7 T5 j6 V3 G& e( T, g! b参数定义:
6 G, A& q( }! o$ K
9 Q) M/ R1 m* G1 O) _hwnd 整形数: 指定的窗口句柄" G: b2 k9 Q* l, S& U7 e
; v, x7 S% X5 X. @/ N: Udisplay 字符串: 屏幕颜色获取方式 取值有以下几种: p/ \: d1 o) d B- c- l ? B
, y" v, S& l3 d+ L4 ~6 Y" S% o1 X
"normal" : 正常模式,平常我们用的前台截屏模式
* Y+ A2 q0 L J9 g s( v3 q2 @/ V) [" A# K
"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。% x: E/ `& `5 Q) m
"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.
' m# j5 j2 E) M, {8 |3 ?0 h0 `% @: r& F7 K) ~
"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台.此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。. B; U, Z" Y- ]4 i7 Y2 j
"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。5 |8 L+ \4 P* g; K
"dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx
# `9 U, E o$ {" I* J# D5 f% i% M; I. n' J/ J( F& ~% z3 w2 l
7 F% R) H3 e" F# n' N8 Q
mouse 字符串: 鼠标仿真模式 取值有以下几种0 V; ^6 K( E$ S+ O! _# r
( N+ d; N5 ? R' S
"normal" : 正常模式,平常我们用的前台鼠标模式
1 W' ~6 \+ [" M* V3 ~% U
6 S9 H) p! |+ {2 D Y& ["windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件.( e9 B8 s9 n+ M o* q
"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合
1 ~8 @ [9 P5 Y: N. G7 h/ A- b"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message"! S' f2 _1 a. S3 t! w% j' M$ ~
- j" R4 K3 j7 m; y8 ~
; ?( z8 _$ Y l9 `
"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台.8 `, ]% |' }4 I% R" m. y' F9 j
" U$ s7 \4 f2 d* j" J9 ["dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合
- O0 ^. b9 d4 y* t( d. y7 Z6 X"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"
* S7 {6 b/ V1 v( A: q e' u, u* d) P# J7 Q Z h
. d! Q! u% y7 ]1 y"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入.! F. x J* C6 f3 Y E
有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合
2 z& C8 M# F$ Y' b"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"4 M7 |. a9 `' }7 \2 e) c
: s+ D3 H/ e5 b+ O/ C
% ~* d; {6 L, d, _) A: k0 }keypad 字符串: 键盘仿真模式 取值有以下几种5 j# R* U* ]+ z% ^7 s& `$ I3 ]
! }1 N$ y6 R1 G# H0 i. A"normal" : 正常模式,平常我们用的前台键盘模式+ Y* t) U, P" B5 P! }8 @
" U8 U2 S5 @. M* \' z+ x. _"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.0 O! ~# A* x5 ], L2 I3 ]8 u
$ ?$ |9 `9 I2 `' H7 X
"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合
6 s& L5 o0 V& D: M2 V0 t"dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"
: r( p5 G/ D) S x6 X& m9 B, B+ [) ?$ b6 ~: o
' c c# |& M5 O* t4 d' Y& V3 E+ D * k7 M% I: L; H
mode 整形数: 模式。 取值有以下几种 0 : 推荐模式此模式比较通用,而且后台效果是最好的.9 ^2 T3 D, T! ]4 u+ j3 H, S
2 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. 注意0和2模式,当主绑定(第一个绑定同个窗口的对象)绑定成功后,那么调用主绑定的线程必须一致维持,否则线程一旦推出,对应的绑定也会消失.
+ j! ]0 |2 L' W5 s$ [7 @1 A 101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用.1 g2 @; C+ d6 t' t& `9 O
103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式. % C I7 e+ I3 s& e. I6 C
+ }1 L' v! m, a; k. K/ j
11 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统: W4 [! ~2 ?) N1 a* q$ z' `6 P
, q" c8 Y3 j' \3 B. J$ J( U 13 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统
! k: r9 z1 y7 i1 {: x3 e7 p需要注意的是: 模式101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把
$ `! X. W- R U& L7 Z& V$ F鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功., c! A; N# T \" O/ _+ c
返回值:6 K, ~3 @# m' I5 j
整形数:
T+ q2 y( s# h9 _( `" O0: 失败9 E( d& Y( @% D3 i! U$ @
1: 成功# b: q! p# `. G8 U& c
2 W* A+ p2 n( ?: g& q* @如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.
' g6 b9 ?2 a% ~2 z' p @7 A! h
6 b6 i" M# i7 R' m3 L, r使用例子:5 I4 l4 T- M3 ~9 x/ h
: {: C* g' A: Y9 G1 X绑定失败的原因7 b! A2 {6 R5 O
5 C: K4 A) Z% t# d: C. r, \: C& J" x2 H% R! y
$ M0 @2 `4 F" m* `! f$ D: W5 ]
; k3 r& `+ h, K |
|