|
|
|
函数简介: 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.- I0 Z( l: L3 s% e
函数原型:
& j- V! s: P1 A1 T0 L0 O7 G
% `: `: ]7 u. b2 O" Klong BindWindow(hwnd,display,mouse,keypad,mode). O F7 T7 y% |6 x
参数定义:3 \' |2 R9 O( u2 U7 n
+ i" Q5 l+ e# M$ ~8 v& ^ o+ k0 V1 x Chwnd 整形数: 指定的窗口句柄
$ m0 G2 v% a1 W. M% p$ h/ O8 v
4 E4 v# W, p2 ?0 k! O- _& B& jdisplay 字符串: 屏幕颜色获取方式 取值有以下几种
+ v( z f1 e" @+ E: X# t
% S# p4 {- S$ ]% T"normal" : 正常模式,平常我们用的前台截屏模式4 [# s2 g. U1 f, i, S6 Y! Q; `
) F+ x; |" \* c; d, S( Z( m- s; `+ V"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
* R5 |. ^ ^# s/ Y( H"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.
/ d: X7 x8 m* h! l& B) V+ v
& g! K9 m3 T% k$ t2 n( M"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台.此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。) _6 r& D4 H+ `
"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。
. s+ ]: E" ?* D8 O' B! |4 @7 F% ]"dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx
- r% _- n$ p( ] D/ s( x. r: k$ [* @; A
8 \$ n+ X9 F4 _! J: h9 } emouse 字符串: 鼠标仿真模式 取值有以下几种4 `5 d6 l5 y+ E9 S: y! r
& {0 _6 l: L% p" f3 y2 b"normal" : 正常模式,平常我们用的前台鼠标模式' }) T+ F3 b3 P7 ~! V# [0 ?" _9 }
; s" O4 |% l6 A/ l- ]2 w"windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件.
, h4 G: s8 b- }$ s6 I"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合
) L8 S* k3 s( p( S8 y"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message"
" Y; s2 I! g& u( Z$ Y% R: a$ Y, d' M# I
( q' }: ^' ]/ g3 j) |. I
"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台.8 `/ b7 D+ q f( ^
# [+ u: B4 v' T( u! I. o1 L- X
"dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合1 v# ?" ]% b2 f# B# h! G
"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"
' @+ O, D2 N* x" i- K- t% u1 @; `1 N1 f
4 p) b/ [7 `' s& p
"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入. P' J; [2 ? a8 k" b. R
有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合
+ [* `' Q% [- d( S1 o' V' K+ m"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"- Y# ~' G3 B5 K/ }. y! `- F
# ^8 L, Z4 r4 j- j$ J( q4 P) t
5 T( l& ^* h; p9 fkeypad 字符串: 键盘仿真模式 取值有以下几种
* i; a6 T" ]% N0 w
( l0 l s9 m3 n4 Q' d- Q& n"normal" : 正常模式,平常我们用的前台键盘模式
# G! b1 G3 o4 ?- {. D7 I: B( C' S* r: W/ y1 M* O1 \" O
"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.
. |) `2 U' r8 H9 ^6 Y' u7 M& @
: n+ K+ e P0 ?3 x$ Q1 [8 B"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合3 a' G( P& B# w9 X. t5 t! ]* d& \
"dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"( [' b) L( l0 ]" r4 T2 i
' L+ l/ O+ P D9 A/ Y0 K+ y
- l: h% L( Z; S5 j8 D
: p9 Q- h+ Q+ s+ p3 l) k( ]- y) H8 ymode 整形数: 模式。 取值有以下几种 0 : 推荐模式此模式比较通用,而且后台效果是最好的.
0 u0 w2 H( e" w) H- r# L, s3 y& k" H7 F 2 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. 注意0和2模式,当主绑定(第一个绑定同个窗口的对象)绑定成功后,那么调用主绑定的线程必须一致维持,否则线程一旦推出,对应的绑定也会消失.0 T# ^ G) ]! E! I( |1 I
101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用.
. k, H0 S% C: B' M$ V$ a& h 103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式.
$ N! Q$ X: r- m* T* L" z+ h) B2 o8 N- y, [5 U, P
11 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统
% ^8 g6 d$ ?* l1 Z( S- \4 q6 p$ c& A- P5 v1 P. `( m
13 : 需要加载驱动,适合一些特殊的窗口,如果前面的无法绑定,可以尝试此模式. 此模式不支持32位系统% s( C* h3 ~, T( ` A \+ K0 N
需要注意的是: 模式101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把
' b3 J6 m0 m& ^8 v( k3 n( T- J鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功. ]/ m3 V5 Y% ^0 }4 \3 p5 n+ }
返回值:4 b& z; o6 c) z& s& M
整形数:
/ i( g7 U% M9 E$ t/ Q0: 失败) Y5 C) @' X5 [4 g
1: 成功
, z) k5 l5 m/ y
6 [8 I/ v9 _+ A1 R6 L如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.: Z8 n8 L9 o; a; `
3 Z8 U0 }" l" Y
$ }5 x% ?: d9 y4 \
使用例子:3 l4 D' w( ^" t: Y( y+ d
. C, O' w- {) x' h' w) g5 `0 \
绑定失败的原因/ x3 b( q& v/ Y2 i& `4 n
& ~. j: m6 r, c4 q g3 ?- ]
5 S4 @, \8 J: x4 ?
. W2 F E% l/ h: b4 w
& b4 i$ _( q& l: | |
|