|
|
|
函数简介: 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.) a1 E* Z' Y* A C0 [8 W/ t
函数原型:- ^; P* X$ n& w
& e. W; N' E" blong BindWindow(hwnd,display,mouse,keypad,mode)8 K2 E$ d8 M( `
参数定义:# j8 I8 |7 D5 l0 ^
( Z2 g6 z" A& m
hwnd 整形数: 指定的窗口句柄1 j' ?0 v% R G- b5 u5 k- `
3 L7 O. @( L [% d* {# W
display 字符串: 屏幕颜色获取方式 取值有以下几种
* q: x; h9 [+ J* W9 `( E. C$ d6 p- s4 n$ n1 {
"normal" : 正常模式,平常我们用的前台截屏模式' _: }- F; N+ W& L, v* r: G
/ V! U' O* l* y2 s, a
"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。% J, O, e6 g1 e0 F
"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.
6 j% Q. J# v# ^1 M Y4 X% s$ C, H8 r( U' j. @! k% v
"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台.此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
( {# y B% ~' a4 `" }"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。, z5 m2 w3 l$ C! D6 E
"dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx
/ V- ~7 T( z! W5 L% \7 p; I7 Y& B1 k" Z4 J8 i5 g9 @% Z2 o% A
7 o2 k6 o$ k' [0 h4 R
mouse 字符串: 鼠标仿真模式 取值有以下几种7 g4 F$ q- `: G. c i4 h- D! a
' Q2 |4 H6 M) e3 f9 g% A5 q"normal" : 正常模式,平常我们用的前台鼠标模式
9 w0 y: e8 y5 J! Q/ }5 ?8 R& U9 q, [' V' O$ A
"windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件.8 Q! N& [: t9 \- s! S5 P( o
"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合
/ {! B6 ]2 V3 x& Y. f"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message"
7 j8 k% F, b @/ H& u6 E9 E) A$ [ n4 {8 U/ K1 u) Q4 R0 C3 I/ B" t* N7 X
! w! a! r T' W"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台./ Y$ }4 d5 q7 [5 x2 O- Y# q3 c
4 N4 q* \: H* t: y( ]
"dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合
+ P% F4 O }, w9 t3 X L"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"
3 F# }- m$ D3 @- C: S* T h9 Q7 c1 }1 R m5 a9 o
7 t6 {! j w c% ^4 [
"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入.
% D/ k$ S- m7 e$ _0 O* J/ Q- P/ \有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合2 J: X% @" q1 m' I5 z- A9 _
"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 ^, B; M% m' Y1 x' x2 q
' ?4 b# q( p, `
6 J5 E$ ~( J8 e/ b3 w z$ w S
keypad 字符串: 键盘仿真模式 取值有以下几种
# v# x6 i5 A' S2 k
, M& |0 o1 J6 y; Z9 {& t"normal" : 正常模式,平常我们用的前台键盘模式: ^1 I! C& `: @" O+ F3 q
% n1 u; e$ x7 s5 ]; e+ w6 o2 r"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.5 Z) {+ E4 D2 f \4 R2 b4 R
2 l* o7 G. i; V+ ~7 y% ~. |
"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合3 N4 x% `$ @$ y6 g- U, Y ^( D# R
"dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"
2 l% M. P1 u" R4 h. w1 ]$ u$ I: ~7 {# K3 j. a$ v x
E" | |: c2 G5 P6 C8 h
' l8 Z1 a: {4 l- Y$ ?2 W& O& F
mode 整形数: 模式。 取值有以下几种 0 : 推荐模式此模式比较通用,而且后台效果是最好的.
! v2 t- s4 r8 w y: d 2 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. 注意0和2模式,当主绑定(第一个绑定同个窗口的对象)绑定成功后,那么调用主绑定的线程必须一致维持,否则线程一旦推出,对应的绑定也会消失.
5 ?$ @3 L" W8 k% Z 101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用.
% \& l" ~$ [. _6 F) E9 w. k- x3 C6 O 103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式. 5 H: l0 \$ Z/ ?+ p4 m4 }5 K0 L
' y+ L: R8 C; P1 k" w2 L; b
11 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统9 L8 Z/ W6 A& h( R* f9 y' R8 e
9 ]4 E( ~: }( n- g! N7 b% X+ A
13 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统: R, p9 N0 {* n0 R6 d9 K* n
需要注意的是: 模式101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把8 s$ V* x' _( L
鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功.* m# ?0 H! g2 W! u, X# z
返回值:! `' h' ^0 s" l! u0 @$ n! v
整形数:* z R; l* \" s2 T w0 }
0: 失败
2 f- U4 @. X- ?9 y+ Q1: 成功& r, V! i' O, C9 Z% D2 D5 Y+ T* I
3 m% g3 q! P. B& p
如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.
: h. H# ?! Y: L- b, v' p
2 s: [+ Q- w' z& g: N
( r0 S0 \$ O- A6 H. O/ w使用例子:' M. M* f7 p6 s8 p- d( B
% W: f, g3 y) ]! E" B4 W绑定失败的原因
8 V" o5 A! Y6 E( _
1 g2 @; Z6 i; v& C# P' m8 }' {
( O* B& f8 J3 n% Q* v6 f. O
2 T3 z9 U' c5 C* X$ Z* p( b) j2 c8 q/ i7 I' U
|
|