|
|
|
函数简介: 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.2 L7 u5 v1 W/ H& P
函数原型:
1 |" {& r5 y9 y7 v9 n7 p
6 X* y B) x: v$ y* V; U& glong BindWindow(hwnd,display,mouse,keypad,mode): @; ]9 S4 X9 H
参数定义:
1 [9 S5 w2 W9 k/ }7 ?
7 t$ I& M' u* j1 z+ Z+ Qhwnd 整形数: 指定的窗口句柄; @5 M2 q8 a+ j$ H7 X+ u
! l+ V3 J. J2 k9 j4 r, S# pdisplay 字符串: 屏幕颜色获取方式 取值有以下几种. k9 B( V+ k5 G: U. o- R" y
, n- T" K; i B" j
"normal" : 正常模式,平常我们用的前台截屏模式
# W$ H# W5 f2 X3 Y! S9 T9 N( ?: d
"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
; x& w2 N" a/ c G7 ]5 N"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.* n: N6 j& u( ?, m B, w
7 N; r& g0 Z/ K& A( C9 M
"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台.此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。6 v$ c) F9 c+ |! Y) G* Z- h" }
"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。% X, o4 }- e' D, D O; I5 G+ w
"dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx! v- n! ]* G) h! F
( B& u, I% `& z; s; X7 G8 Z% D
9 P5 L: l+ H1 K6 s
mouse 字符串: 鼠标仿真模式 取值有以下几种
+ [. a: V& _. h# Y3 |- J0 u! ]4 Y* G" V/ u+ a
"normal" : 正常模式,平常我们用的前台鼠标模式
* y5 T( J u- D0 }
, o! W9 P* X. |3 a"windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件./ R/ T3 ?4 _3 \" P$ C7 T( l A
"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合! m1 X0 s" D1 z4 k" @! ^
"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message"- B D8 C1 J M, s
6 G4 j3 p4 {& P, }) v
1 T( R w- X/ O6 Z"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台.$ x) j) \6 h$ }9 V& T7 D
8 K; d5 M+ e: D( h"dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合
0 L9 O `2 n+ s"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"- q+ {8 [) u' y/ L& y
0 j3 ~- c# E6 ` _% d
% O' v& v1 U& }4 v"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入.
0 E: g2 K7 f; k有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合# M. E' y+ F" F% q
"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"7 e1 k# K6 {# d) ?% z6 s
+ N" t6 q" v4 k8 X7 }5 `+ l$ a/ }; w+ d0 s4 J
keypad 字符串: 键盘仿真模式 取值有以下几种
9 }) H- V+ q5 }4 _1 |' E" Z" ?* V7 k6 K! g) i
"normal" : 正常模式,平常我们用的前台键盘模式
5 z3 Z. _0 _; s3 a3 D/ I
. }+ }9 P* I. q& e& y/ ^% k# ]"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.! l d) s1 C" \0 B
2 e: z! F$ q& [5 k3 ~& _
"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合% A: ?7 ]- B- [9 A X9 @: A' m( x
"dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"3 q( q, m) E0 Q3 E9 T
: l( M* n5 G6 x4 n& \4 w
4 o- f7 J8 l' U( i* E% |
, e$ c8 W8 Q1 j: _ j
mode 整形数: 模式。 取值有以下几种 0 : 推荐模式此模式比较通用,而且后台效果是最好的.
# T8 `1 Z+ n4 I% j2 K# C. M 2 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. 注意0和2模式,当主绑定(第一个绑定同个窗口的对象)绑定成功后,那么调用主绑定的线程必须一致维持,否则线程一旦推出,对应的绑定也会消失.
& V( Q6 \: }3 E! \& N4 O 101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用.8 U M- a. k" w3 [& d
103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式. ( V* D! B8 n2 H2 Y2 D0 e+ D6 V
3 M- q- ^, s) e" p 11 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统
: S. L( C' r; D( A
5 y' o. ^7 e; u6 C/ Y 13 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统+ L u# V" h d2 P* \' E! y7 U' c& S
需要注意的是: 模式101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把
( M$ b5 p. x! x& }6 Z Q# [鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功.
0 B# U4 k; V* \' x" \返回值:" w/ z+ F$ a# l N" |2 v% |8 P
整形数:0 H7 w8 t; Q3 A: h
0: 失败
7 A$ J# ?" f( \6 i5 ?1: 成功8 e8 i5 q' l/ q' l* j& @; o; d
- c, J6 i! T- ^" d如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.
0 o, {* n$ b' H, I+ }& s1 k. u
! V# M# M, t% f3 y1 y
% Y; k9 k7 b ?' k/ b使用例子:6 |' e9 u8 i/ v/ R- o3 c
: Z2 a2 Y; b# B, U绑定失败的原因( C8 c U$ f% g; e7 }( g3 n% o Y: q
! G7 M- p) @; |2 E0 \ e+ n7 _. j: l4 ~
% P2 m8 B" V+ i0 ~' g8 V+ T0 M
3 q. K! P. q7 r/ x( T0 J! }
|
|