下沙论坛

 找回密码
 注册论坛(EC通行证)

QQ登录

QQ登录

下沙大学生网QQ群8(千人群)
群号:6490324 ,验证:下沙大学生网。
用手机发布本地信息严禁群发,各种宣传贴请发表在下沙信息版块有问必答,欢迎提问 提升会员等级,助你宣传
新会员必读 大学生的论坛下沙新生必读下沙币获得方法及使用
查看: 4501|回复: 2
打印 上一主题 下一主题

EnableButton,大家自己看看是做什么的吧

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2003-10-31 23:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1 m* q( ]3 L# [8 D+ u1 D. C! R, r' B; EnableButton ALL For bbs.xsclub.com + ^9 w. U/ `8 q. f; by 游侠无极限$ m7 O) w$ ]% m# y0 } ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1 g, s# c! s; `/ R. C! ~3 r: v; EndableButton.asm8 E4 [% p" v6 \8 k/ g0 Y ; 基于对话框资源 4 f4 \( o2 E! [7 g" o. r;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # `% }# O/ r6 ]/ { A3 P* M1 W .3860 L9 w! i( U+ I; V) R- m- {+ k .model flat, stdcall' x- q/ t& L* o6 Q option casemap :none7 e" e: d4 _# J ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/ x p$ ~# H% g. { ; Include 文件定义: W6 U8 E1 }) |! }1 M% p ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 5 b% |5 m. B; M, E3 @: ~1 p0 P8 ~include windows.inc3 V: L; `/ D& p- [; p4 O' I# z include user32.inc6 a5 s+ M$ g# N includelib user32.lib$ V/ I7 j! o4 B include shell32.inc) f v5 ^ e: P, t( r' I includelib shell32.lib6 [( `9 o+ e9 ?- J include kernel32.inc 5 Q+ e& y1 ?# o `' Rincludelib kernel32.lib . L; f% B2 F6 B5 a l;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>) j, A- i% p# h/ }( O9 x+ K4 C; f ; Equ 等值定义6 U [8 M3 Q+ S$ k+ X6 H8 a1 A% L ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>, X3 i# K7 G5 Z! P! y5 X! g ICO_MAIN equ 104 ;图标 - w) d. \8 L: ^) [- x! P# u" nDLG_MAIN equ 101 ;对话框 9 ?5 a, C- C7 o5 HEDIT_MAIN equ 1002 ;编辑框7 I3 q& A" P: H! S8 @ ID_ABOUT equ 1000 ;关于按钮0 f4 U* F3 O: n6 z w1 d# C6 M1 b# j L ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>! w" _0 y- s) i5 m. ]' k ; 数据段 4 X& l d& ~& P! w) a8 a8 J;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>) S- g- Y( E9 x6 B7 c .data? 8 d4 |# l) `" I7 S' f3 Y Y % s6 ?; N h3 ~+ {hInstance dd ?: S5 J b! a- V. a0 w hHook dd ? 1 r* y' L% G) k; [hWndMain dd ? ( V6 D$ } d7 P* bIsStop dd ? # Z# I- ^. E- s! S# g L. R. x2 w, S" h g .const 7 [) S( k9 G m* F0 j8 T/ YszStart db '启动',0 3 {8 j W: P C/ T+ O5 CszStop db '停止',0 : k; o6 h; H9 w+ \' XszCaption db 'EnableButton',00 L! q* l) `2 h6 r6 O i szInfo db '版权没有 03.8.20 游侠无极限制作',0! h7 F5 c* {+ b! u) [3 R szErr db '安装钩子失败,原因不明',09 s( i- ^/ o7 r* w( {" E, W szWnd db '%lxH',0' j& s- y8 b$ t: M+ e/ ]; H8 n ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> & G- Z, W* P7 X. \& g2 A- ^8 [2 b7 A; 代码段) ?! |/ ~9 {' ]; W8 ?+ [ ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + h4 ?9 Z% I5 D: K: K& \ .code# z8 D: ?5 {7 {, o W- W ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> M, |! r' X! ?, c1 a3 z;钩子回调函数 , z5 n8 O4 P( o0 o' K( N% d; g* V- J;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+ g% e+ m' i# i2 {9 ? _HookProc proc _dwCode,_wParam,_lParam / L% D1 c' V- E local @szBuffer[100]:byte3 j+ t" m( E) l& c* P& c# ` invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam ;钩子链传递+ Z/ w& \$ A' P/ d6 ^( U0 K( ? pushad/ F/ y! u. y! t) n3 z: d; n/ a( I .if _dwCode == HC_ACTION ;Windows要移除一条消息时 , M! K7 S" J4 ` mov ebx,_lParam ! \3 u) ^; v+ w3 M; u+ \7 X3 D5 | assume ebx:ptr EVENTMSG " b5 \: \/ W8 l5 D, I4 K .if [ebx].message == WM_LBUTTONDOWN ! m8 j2 s: p2 e6 i3 A mov eax,[ebx].hwnd ;取得当前鼠标所在控件句柄 ; R0 X( |; P- W+ T& l invoke wsprintf,addr @szBuffer,addr szWnd,eax" D) C6 F" A; j1 r invoke SetDlgItemText,hWndMain,EDIT_MAIN,addr @szBuffer ;显示句柄 ; t+ x2 X+ v! h5 Q$ G invoke IsWindowEnabled,[ebx].hwnd ;判断控件是否无效 . y8 T2 p7 t. \% l' l* v .if eax == FALSE$ g* G" L6 }* g' r. t4 E+ U; J invoke EnableWindow,[ebx].hwnd,TRUE ;使控件可用 ( s l E; l5 G4 q& e4 s .endif p7 q3 C. U' Y, V, S( W ;.endif1 H* R! S2 m8 A) h5 ` .endif3 B* P$ P; M$ p$ E assume ebx:nothing $ ~+ w% M. o! Y/ b/ _ .endif + u" c" l- c9 v/ A ) K0 K& ]1 `% y7 K s) M, |2 f popad * r: m5 ~8 |5 ^6 y xor eax,eax ' X! j% j$ l5 j" e f ret 0 o) x4 p' h6 o5 k_HookProc endp# m |3 d! J. T" x ^ ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> " F) ^, q9 I$ {$ f- s+ L& i6 q! k5 p& [ _ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam ' Z- E, Q: v1 f+ b+ q0 M0 } % w7 p8 i w. d+ Q% H: q mov eax,wMsg3 x a* i! j; m: |3 a4 | .if eax == WM_CLOSE 8 a- L" u/ O; _3 |% I .if IsStop != TRUE; K, h; l( \4 T: J. q: a* p$ ~ invoke UnhookWindowsHookEx,hHook ;卸载钩子 ( M) M* L$ \2 V! y1 z4 k5 S .endif 1 A& R6 `5 s3 |4 c invoke EndDialog,hWnd,NULL , G ~! [3 x7 w; h# X .elseif eax == WM_INITDIALOG % V$ Z6 m4 r: A' V3 F invoke LoadIcon,hInstance,ICO_MAIN " B: N8 T9 ?+ E( m/ q invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax+ }) N. g1 G- ~2 Z2 \ invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE ;窗口最顶层7 B6 a9 L% b5 v3 ^ mov IsStop,TRUE . l1 G# [& r- \( z7 q push hWnd) m8 L* }/ q* j- k6 `: ]$ n pop hWndMain9 M' B7 _ ^7 O .elseif eax == WM_COMMAND8 t: {8 v' E. h5 F mov eax,wParam - Q G6 c! S6 M" t' {* q .if ax == IDOK; c4 l. J4 K0 z7 s& e' S3 d- C$ ] .if IsStop == TRUE9 e* w0 }8 A( I2 ~- {' K+ D invoke SetDlgItemText,hWnd,IDOK,offset szStop6 K& k; H8 d& \4 E% L( z6 ^ invoke SetWindowsHookEx,WH_JOURNALRECORD,addr _HookProc,hInstance,NULL ;挂钩,日志记录钩子 # }$ d* e, Z8 z" {5 t .if eax' z( K4 N' w" Z$ Z; ~$ t mov hHook,eax9 v/ c7 ?! g- p .else ;挂钩失败 % k. c5 ? y5 R9 b h6 Z' U ]9 [ invoke MessageBox,hWnd,offset szErr,offset szCaption,MB_OK or MB_ICONWARNING8 G$ k& \1 r$ b$ e .endif / R" Z' X: J- w* h mov IsStop,FALSE 8 j5 k1 W* c) C! \% ` .else 6 Y. z: w) m0 G9 N invoke SetDlgItemText,hWnd,IDOK,offset szStart8 a7 O% r/ l5 I) I" W1 S$ ^6 Y6 | invoke UnhookWindowsHookEx,hHook! }4 s4 v* R. ^ mov IsStop,TRUE 0 x! N/ N8 |3 p5 C8 s3 Q7 b3 z .endif" S7 Z5 y g$ w n+ P .elseif ax == IDCANCEL + z- z+ L' b: e invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL % ]1 P( d, ~" n .elseif ax == ID_ABOUT , W% a: e# g( _& ~4 `; Z0 m# K invoke ShellAbout,hWnd,offset szCaption,offset szInfo,NULL ;关于对话框% g- a3 [2 m4 I3 A( S5 O .endif! z7 G2 X* `3 a1 i) M/ C1 C6 B .else7 L0 a$ }, n$ U8 ^0 [# E& l7 K mov eax,FALSE 4 X% C& H K3 V' N# n9 I0 V ret 3 o7 K$ x/ Q0 l3 b1 | .endif ( q; G) S4 [5 \+ D- M, l9 e mov eax,TRUE5 n1 I+ e% d; L- L1 M ret9 [- q; J6 e' t3 v - L- x; ~# O. B: [8 _. {4 ]_ProcDlgMain endp 0 g* d- \/ m& j* i3 J; h6 T- P- u) z! K& g) q( X ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>9 h- e4 a, B1 c( }; a% | start: : b) ^( |+ Z, N/ o, i invoke GetModuleHandle,NULL * j6 N }% L b2 A$ }' U mov hInstance,eax |: h, O3 h6 @, E, \ invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL% o0 _" R) d( _3 C invoke ExitProcess,NULL5 y' v8 t' [3 b( \ ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>- b( d5 w) f5 Y- b end start1 D8 f I, l/ [3 P! F+ `9 ?; _. |4 ` * e* r$ [: T; ~' q, W9 z( l 4 d4 e) d7 c5 l, n界面看下图片! c4 _% w1 U# ]3 q9 l) i5 [" E 6 ~: T8 ~% B, m4 F C# U9 W$ ^ " b. p& x, ~/ j1 I 4 N8 s% R5 q5 X4 D - T+ l9 ^+ u6 T% o2 @$ v s' L% S1 X0 m2 D! u; {" ^6 u5 K 8 s% V0 X% ? j( t" ^$ W, F4 U5 y: r7 b
[此贴子已经被作者于2003-10-31 23:37:05编辑过]
, L% u* v& E) S* h4 ]( X. S' v3 X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
bigfoot 该用户已被删除
2
发表于 2003-11-1 11:10:00 | 只看该作者
搞了个WH_JOURNALRECORD hook,大概是把变灰的控件Enable,有点意思5 k6 q# G+ N% k* c' f, C. W: B
不过这类界面程序实在不是汇编的强项,用了大量的invoke  ,整个程序结构看上去和c别无二致
* P3 D- }$ M9 ]$ l' n' g+ z2 Z汇编的强项不在这里,楼主如果想显耀汇编的强大,这个例子不怎么,6 Y+ u/ s8 H; O% w2 h7 N9 N4 j' d
再来一个强一点的原创瞧瞧 ^_^
: r6 s* j8 Z4 J0 C$ a- j* r
( x& ^% m1 ]5 q0 J3 C4 h: p. t9 i
. }2 ?8 A1 O7 ~" j7 b5 u0 J3 J$ S! ~! m0 N1 h
[此贴子已经被作者于2003-11-1 11:16:10编辑过]

& @2 q1 |4 C- Z

该用户从未签到

3
发表于 2003-11-19 00:14:00 | 只看该作者
bigfoot,留个QQ怎么样。

本版积分规则

关闭

下沙大学生网推荐上一条 /1 下一条

快速回复 返回顶部 返回列表