|
函数简介: 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.- g- n7 d; L$ J9 R
函数原型:/ n" c$ v0 N9 g$ ^' `
( p6 a+ B3 J; o4 v, Z& Vlong BindWindow(hwnd,display,mouse,keypad,mode)
* X9 u0 _1 S- \! _$ J* T2 @) P, _参数定义:# g# L2 p, }& G( s
) ]( G; I1 V' }! q0 ?6 Bhwnd 整形数: 指定的窗口句柄
" ], l/ [: b9 P4 z. e( e
$ [. C: M$ O- B3 t( |display 字符串: 屏幕颜色获取方式 取值有以下几种
* r% g3 m! m: |' R* }8 E9 f9 C- z7 s1 X1 ^
"normal" : 正常模式,平常我们用的前台截屏模式5 m8 x. r, R0 R, j! }& r k
# t# S: \1 L& J9 n* Z# c! K' l6 e
"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
# {/ H# X( v- M- \+ H6 y/ Z"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.: A' ~9 ]3 u" q, a
$ p+ U: p0 D+ G5 H4 G
"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台.此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
3 V) J1 P1 ?* B1 m/ t"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
- ]: U, e* g8 r) s% k5 ["dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx, W# y4 u& e0 X& ~! M9 z' i
) G$ |7 x( Y$ i$ m4 [* i
$ R9 h$ J9 g9 z3 j. m
mouse 字符串: 鼠标仿真模式 取值有以下几种
7 `$ u; c2 U9 W- V' T, i1 t& t1 K/ u7 x$ `/ R3 j7 e! I- o4 i( r
"normal" : 正常模式,平常我们用的前台鼠标模式! L8 n! D( A0 J! W% v! F
/ D! r* o/ {1 `* [# I# m- U! m1 _"windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件.6 n( q8 [/ ]; _6 i
"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合
$ m( m; W! V. e) c4 `+ e) ^"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message") I% U! {) |5 o! J$ k. L
0 C/ M7 u( _, J, w
! S/ T4 y' w' k6 I/ ~# }5 u
"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台.$ A% n+ |3 M5 c! T
- Y' l* C( [6 s3 L) K' e3 p
"dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合
& B. Z' D, O7 [9 s, j, |+ I$ h"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"
; `9 g" B& s6 \# ^% |' v. |+ Z0 [5 f4 |! k
8 t, d/ e. e7 _. F"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入.
2 d& j. o$ Q4 l有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合
/ y4 `, S. Q" g! b0 d4 o"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", }1 R3 l0 ], L) @' Q4 G
1 W, \' Z1 }, e6 ^4 S: B) R |
* a: }0 e, B$ p* D$ kkeypad 字符串: 键盘仿真模式 取值有以下几种
" |4 x, a: Y% o2 g& h) y* w, u" y$ q4 v z) c$ ~
"normal" : 正常模式,平常我们用的前台键盘模式
1 b# f& R# [3 h h0 b+ W0 o3 m9 w4 V( S% X' W# g2 q4 t
"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.
2 A9 A2 p# u0 ^- d) ~3 m, z* r! b0 m( D& B D3 ?
"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合& n' |' B2 f) E* p
"dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"
9 q" D# k$ c( r! Z# M" a K+ m$ a$ i3 R! ^5 p
$ ^- ?% ~/ h$ Z, Z6 I4 P
3 w, g% F. b' D. j7 _mode 整形数: 模式。 取值有以下几种 0 : 推荐模式此模式比较通用,而且后台效果是最好的./ v1 W' G" d+ o1 _* i6 g1 o
2 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. 注意0和2模式,当主绑定(第一个绑定同个窗口的对象)绑定成功后,那么调用主绑定的线程必须一致维持,否则线程一旦推出,对应的绑定也会消失.
7 c9 j1 q0 F5 V5 b' V6 j 101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用.
% A; [4 R8 ^+ _9 t 103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式.
3 E5 z# [6 C' Y7 i* Z
% w5 ^. V! B0 x6 \7 N2 l3 Z' m 11 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统
. L3 v5 E4 X& Y/ v) t* H3 w5 {
4 m a0 _( m4 L3 {$ g4 n! Q 13 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统# _% b; k i: g0 C0 W5 U$ f: b# ^
需要注意的是: 模式101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把
) R* D& a% Q; P" C$ L鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功.: t( l8 b( N& y$ ]: y1 Z% A0 v( j% z
返回值:+ M3 U6 T2 s, o7 D* Q6 ~- V
整形数:
2 b; g" U3 E- C0: 失败8 r9 L% J; S; a! @; }
1: 成功
1 F* h8 V6 K; l- {) x9 s M* m2 {- w% p4 @6 L! c; q
如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.% ~: o5 n8 W" V" P: r$ h( b+ s
2 q8 D8 l x1 r" T
: T7 D e2 g4 c9 d* Y使用例子:
4 h0 W0 R, l/ |% y" s
4 Q) \/ p( D* H$ \ m! \绑定失败的原因
4 q9 ^5 Q+ r2 F: p# p
# U8 F" a' O3 M' D, T6 G$ C8 P8 S1 ^& G4 B- t
- V+ D7 X8 j0 v1 T& g9 N, t4 l9 f; F. u, m2 [
|
|