|
函数简介: 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.. @4 X0 M2 Q2 U
函数原型:2 i- G. o' L2 f7 E9 x
4 D2 \0 {# V) e' B4 a$ z0 vlong BindWindow(hwnd,display,mouse,keypad,mode)8 z2 E9 L. l" S( G4 Z
参数定义:
7 ^7 J1 w/ i i0 B# Y1 r1 W
# q3 B- k7 q/ jhwnd 整形数: 指定的窗口句柄
9 I; x* [& u0 x) ^5 O% i8 s7 Z. S# Z& d; T
display 字符串: 屏幕颜色获取方式 取值有以下几种3 ~" x8 l' h6 f- O5 {
; j) f( W1 v; r/ b% s"normal" : 正常模式,平常我们用的前台截屏模式
- m) ]: u# h) c/ H8 a
Q/ ?' B3 |- S( R+ D. s$ t* i"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
9 S u6 h* A5 W"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.
* F2 T5 i; ?0 [( D5 o: c, j# \5 z- X6 z p: R# {
"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台.此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
/ f, z! G" e/ O" E- ^"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。' M6 i( C, A* k1 t" ?
"dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx5 `/ l/ g- B" ?% Q" J4 I f) i! |
! [. w/ d3 i! U3 a8 C8 I
" a% [& O6 _9 p' J+ W+ {
mouse 字符串: 鼠标仿真模式 取值有以下几种
- G3 @4 S9 w% S% ~: m3 Z* G, W
$ K, D1 q5 D3 E/ Y) i"normal" : 正常模式,平常我们用的前台鼠标模式0 g( B! @7 [* h# g$ B2 e
7 a) }9 ^) \! m, I"windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件.
( G% V7 `6 C% R6 [0 P4 J2 x"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合7 k0 ?) L% v* H' D+ @$ g
"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message"
+ J% O% o- H, I4 S+ F6 ~' Q3 Q Y* V8 x
" u' ^* Z5 y( O& s( y"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台.
3 P: k/ C. H$ f& p. D6 R; w$ ~' P$ X
"dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合
$ K U) L; O+ W* }: s% ^/ b"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"% @: a, M0 U$ A- D6 F+ h! a r+ n4 Y
7 y2 V! @$ x7 Y# A% R2 D! \& h5 g3 J# b( \9 {$ R j2 ] W
"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入.- W+ ?6 i4 e3 G A
有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合
8 n H$ Z! |& |) H& ? ?- i"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"+ p8 c4 w7 j% p' I7 E( o( k) i
6 V! Y8 H T- E7 ]1 U! g; F# N! R2 M
keypad 字符串: 键盘仿真模式 取值有以下几种
# Z5 _: ?" \! y8 G$ H% \
# W) N- B2 {$ S8 Z"normal" : 正常模式,平常我们用的前台键盘模式$ i5 c& i9 n; R
, L7 B& @8 H" e, a/ j6 P3 ~
"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.+ X) p/ Y" `' P; ?7 V2 m; H
7 J4 h4 q8 N- y7 H+ L1 ]% c: s
"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合/ h; F, t/ z% @- m. t0 v @
"dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"
+ K0 _8 V# l5 M1 o! ?8 p8 @ [; m- k" |, a. A- `5 i+ z' @% Z
( O$ h3 `) T4 P! ?! y
2 _$ ]* ?9 m7 w5 N$ B5 lmode 整形数: 模式。 取值有以下几种 0 : 推荐模式此模式比较通用,而且后台效果是最好的.5 L# b( e4 q9 b
2 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. 注意0和2模式,当主绑定(第一个绑定同个窗口的对象)绑定成功后,那么调用主绑定的线程必须一致维持,否则线程一旦推出,对应的绑定也会消失.
- @# x# r& @# P, i, ] 101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用.+ y r$ R/ d. H
103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式.
2 n, f7 q, r' X E2 Y
: O9 L: M0 V% J7 F 11 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统2 W! j" U+ ~0 E( Y+ L5 ^# N
- g& v7 z9 x- T" ? 13 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统3 k ^. {. s: g9 _
需要注意的是: 模式101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把4 d, ~6 X% C, V7 t) J' E s: ^
鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功.8 W1 |. V$ V/ p) x; c3 J/ r* \( ?3 E
返回值:3 x. X9 O$ ]: B! f( s0 G- \; V0 A$ i ?
整形数:. V# x6 |: F$ d
0: 失败$ j9 Z( n2 ?- o* z3 L/ w8 ~
1: 成功
& W7 {4 J+ {) [0 P+ K6 @
* @3 z1 @0 Y2 T如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.0 z8 X# ~% G: j7 y! ~ V& X
( ^) j& g1 [ n
9 @+ x( J; f3 p: X使用例子:+ h; w# U: r4 H, G& N$ u& F
$ X- x, r7 G& F绑定失败的原因0 T7 u5 h: x, z
' r7 ?6 c+ K! G# U3 \9 z+ e3 r V2 k
$ K* j8 U3 _; a4 n* y! {* K+ [
! A0 s- {: _4 v |
|