下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2003-10-31 23:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! _) Q$ w3 O: r& m4 x; EnableButton ALL For bbs.xsclub.com $ ^- M$ ]3 ?% t; by 游侠无极限 6 O6 G) y9 d- A% r% Q;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>- H" k7 b1 s) O ; EndableButton.asm & O, v3 [/ x9 b/ o6 h% z; 基于对话框资源" d$ D7 ?- ] C. W% @8 M2 T ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3 W6 n1 w* j* z' R# b9 V .3861 D1 Z+ Y' _7 C1 U+ |# n .model flat, stdcall , Z, e$ `8 X6 G option casemap :none: ^$ o& r! \6 }4 l0 y4 g* E% t ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> : ^$ Z5 T0 d' J- h2 {% |; Include 文件定义& O& L$ @0 a1 L O0 j9 k ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 0 Q2 z$ d7 y& \, q0 minclude windows.inc / S( a; {7 T; ^' C7 i: jinclude user32.inc : W: l+ Q! ?! G7 H2 qincludelib user32.lib( W( s7 g% S+ h& y" t% R8 F include shell32.inc 1 D; G$ h: k4 n$ H8 R7 v( aincludelib shell32.lib " m6 H1 E5 q* h) Einclude kernel32.inc 0 y1 S: g& y3 n f; H( ]includelib kernel32.lib . {5 G6 P7 b ]+ f5 s;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 6 z& [* C. Z3 c! S( _7 P; Equ 等值定义0 }/ t& q( q3 Z3 _ ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 4 x: @4 x l9 C% b+ A- TICO_MAIN equ 104 ;图标 2 N. j- V; V* e3 a. e$ JDLG_MAIN equ 101 ;对话框6 ~9 W+ E$ K" w. J9 y2 c EDIT_MAIN equ 1002 ;编辑框 4 i& T' C* E( o% R* l7 HID_ABOUT equ 1000 ;关于按钮 / s5 k1 h3 R, F/ _6 ]' ];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; o- ~! H9 Y) H% k; 数据段 . M8 ~0 j0 [( u# d;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' W$ ]# U. Z/ D* } .data? 0 h* h$ k: `, ^. ~& E. V2 j: P* A/ w3 o) X6 g hInstance dd ?7 @( I% S$ X0 Z1 v( p. T. V0 l. u( p hHook dd ? - H m1 t4 D; p: M: z. Y' ohWndMain dd ? % e) _( f- h5 x# Y1 I4 `! pIsStop dd ? 7 b" H' @* E2 a6 Y, S ' |% p1 I5 p3 |6 k- C: @, d .const3 r# b" m% T% P1 ]: {: b. r8 R szStart db '启动',0 / M: R& \0 K$ D3 RszStop db '停止',0 8 f) z& `5 e* gszCaption db 'EnableButton',0+ d: D# A2 Y, ~5 `- Q6 S szInfo db '版权没有 03.8.20 游侠无极限制作',0 6 s- M( `" c/ O3 S; o. |/ \) _1 L$ mszErr db '安装钩子失败,原因不明',0; H$ t( b- L! E) m- G1 L szWnd db '%lxH',0 ' v! Q! M' E4 E) z;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>0 ~" Z* f8 s" D5 R+ b- t ; 代码段 ~) B' |8 v7 U' A4 Q" q ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> , _) [/ e; o% P .code5 U, B( O2 v q! X1 ~4 k) n0 V& q ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>0 w/ D# ^3 e, }; s: F/ P' C6 B ;钩子回调函数 + R# Z7 i: R" u, c U/ v- U- ?;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>0 Q8 h; b3 r1 f7 Q9 f, @ _HookProc proc _dwCode,_wParam,_lParam - I/ X) G- @; Y% [7 y: m: j$ Y2 g local @szBuffer[100]:byte ( r$ i1 B; l# A& A2 J" x' C$ O invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam ;钩子链传递 - ?# l" i4 J- I/ R4 k8 J7 s z: X pushad1 z( I- C W. L& F- [! ?( T$ c' @7 Y8 Q .if _dwCode == HC_ACTION ;Windows要移除一条消息时' |7 y7 m+ I% z2 W mov ebx,_lParam o5 E; b; M' z9 C; i* C% w; _ assume ebx:ptr EVENTMSG( i& f8 k, t1 o1 {# U .if [ebx].message == WM_LBUTTONDOWN ; S+ U' j8 K4 x4 E# w( Y' X mov eax,[ebx].hwnd ;取得当前鼠标所在控件句柄 ' g- a6 `/ A, Q' ], h7 l1 Z invoke wsprintf,addr @szBuffer,addr szWnd,eax % X2 D" _3 G+ r6 f+ D6 g invoke SetDlgItemText,hWndMain,EDIT_MAIN,addr @szBuffer ;显示句柄 ' t- I' y# _; ~ invoke IsWindowEnabled,[ebx].hwnd ;判断控件是否无效 3 ^/ z5 u- ^" d: B6 r .if eax == FALSE 4 Y2 H+ h. w# o4 y7 }4 W invoke EnableWindow,[ebx].hwnd,TRUE ;使控件可用6 y5 n$ z* o O) f4 j .endif % Z' i8 B0 v S: g. g ;.endif ) ^: R0 ?% h% Y" v, a .endif / |7 f" _4 A3 ] assume ebx:nothing5 G7 U+ }5 D0 P7 D .endif 1 b' y! |1 O2 Q& g) I+ ]. G3 u# ^1 Y7 T# U popad 2 |& \' s% y% Y/ l% G. c6 t xor eax,eax- i) Z6 j& c! M+ _, ?- P1 R5 [ ret- E; ]% m0 j, o9 F4 H8 o/ Q0 n+ z _HookProc endp : n6 A2 h4 J: j8 R% E2 s$ U;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> % g; K" Q, b* F8 a' T$ J ) ]' ~/ h2 v' h1 O_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam8 f# \* `0 ~9 p8 z : E$ P0 A6 H" i. n2 p e, q mov eax,wMsg : D* v9 d# R+ L9 ?7 J( T .if eax == WM_CLOSE ! r0 r5 n! M) @3 o" \! S: i .if IsStop != TRUE ' E# d7 e8 u' V% {1 W; z invoke UnhookWindowsHookEx,hHook ;卸载钩子 L) X. m! \" M6 F+ @ .endif3 f& i, M7 v6 ~, N. d o1 O invoke EndDialog,hWnd,NULL ; }: D) C% {! D9 i) d .elseif eax == WM_INITDIALOG & `2 t7 C% S3 q! B! P- a% d invoke LoadIcon,hInstance,ICO_MAIN 0 {6 ~4 u9 e$ m9 d" P. [" _ invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax & F% g7 T. t5 k; O1 i+ s* ?; V+ F- l invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE ;窗口最顶层( Y$ ]3 a/ K9 ?# \ mov IsStop,TRUE1 P, j' F' e" g% T( z push hWnd ' b8 K- U$ i1 u0 o6 {+ i; {# p pop hWndMain 7 z# s( e' X2 l m e .elseif eax == WM_COMMAND7 ~5 ^/ @. |7 Q! O mov eax,wParam7 E4 e5 D7 D2 @# @3 y3 k .if ax == IDOK + B4 A# W- H- M# x8 m, G .if IsStop == TRUE6 K/ o+ ], y& p7 {# V invoke SetDlgItemText,hWnd,IDOK,offset szStop 7 t0 u7 B% O9 t( s0 Q; s* ^2 B invoke SetWindowsHookEx,WH_JOURNALRECORD,addr _HookProc,hInstance,NULL ;挂钩,日志记录钩子2 @5 R8 m* c& _4 X; g4 w4 i .if eax , N [/ Q& u6 o mov hHook,eax w+ [- o, G: `( s& |: R) c& m .else ;挂钩失败 9 R3 j6 r, p6 _ invoke MessageBox,hWnd,offset szErr,offset szCaption,MB_OK or MB_ICONWARNING " b" K# L$ c$ @6 a( p) C3 W( K% \ .endif0 R3 m$ R, I$ l4 ]0 w o7 N mov IsStop,FALSE% `# j* P5 [" H4 D0 h9 ` .else : k9 Q% @$ l4 M# j/ `5 P invoke SetDlgItemText,hWnd,IDOK,offset szStart" m b7 n% z, @! r% ~8 N invoke UnhookWindowsHookEx,hHook1 d0 l+ {7 a/ }4 S7 U mov IsStop,TRUE$ f \: {% j' [% X .endif R: _' M, L% g% `, O0 Y3 Q% h .elseif ax == IDCANCEL! f; X, M2 P- K) q1 }# @; E: X9 U7 N invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL 9 O8 Y+ F& R$ A .elseif ax == ID_ABOUT 9 \0 r/ ?. s$ r+ @( \1 Q! o invoke ShellAbout,hWnd,offset szCaption,offset szInfo,NULL ;关于对话框5 X- Y1 ^" ~1 w2 H( G .endif/ D& H. X# c/ e4 p. O5 X. i .else5 s2 B9 O6 w1 f8 V/ N0 \ mov eax,FALSE, A& x: x) P# d# j& e3 T1 E7 C( b ret . a, ^4 ? n! Q- o7 P: J/ |' Z7 m .endif 1 X- `% h' V9 w mov eax,TRUE& O. [ O6 g4 I0 ` ret5 r: _: D/ H# u! s% Y/ B i 1 S+ m& \% [/ t) Z+ X0 `: r% b_ProcDlgMain endp% p% V! d- Y2 v ; Z6 j$ z9 u1 i8 [! {; _: H M: T ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> . W2 I. i" p3 n( s# } kstart:3 o7 _' X4 n/ I! Z1 t8 V( H2 L4 z invoke GetModuleHandle,NULL( V1 q, U/ N+ T* \. {! W { mov hInstance,eax g% L e/ E' P9 L! g invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL5 [2 n& f V+ ~. F3 G8 ? invoke ExitProcess,NULL 7 Y0 m* U* W, y( h. m L( y1 d;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + q3 v* z8 y: t! s i+ V. R end start , {& n, r6 R, x6 W: l; P* V7 T: ^9 x2 c# ~1 }1 X( B 1 U7 b: {, Q6 T4 a+ a0 I9 c) S 界面看下图片/ Z3 U7 o% `+ F& j7 ]) P/ C: K / U. |" r0 d! D $ p# E: T& }+ }! ~- v- X; X ! K/ y! i) ]: S* R W; }8 F6 _7 d- i2 ]! f# A6 |# u* b ' \. b1 a/ r6 Z$ @5 n* V ! y! K& r* v$ {9 R ' ` i+ j$ G2 R0 n# ^
[此贴子已经被作者于2003-10-31 23:37:05编辑过]
' q* A! Q ?# e! b$ |1 g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
bigfoot 该用户已被删除
2
发表于 2003-11-1 11:10:00 | 只看该作者
搞了个WH_JOURNALRECORD hook,大概是把变灰的控件Enable,有点意思
5 N5 |6 D8 k% w: S3 v不过这类界面程序实在不是汇编的强项,用了大量的invoke  ,整个程序结构看上去和c别无二致
# x! ?  v7 }) Q2 S5 J7 e9 L9 q汇编的强项不在这里,楼主如果想显耀汇编的强大,这个例子不怎么,
: N5 s. X, j( e再来一个强一点的原创瞧瞧 ^_^, l$ }  G6 i& O0 X; o4 k8 g( ^3 m
* J) x3 R  s' `: x

1 L8 W2 Y) B8 n
% a" w$ I- ?: k9 n# Y
[此贴子已经被作者于2003-11-1 11:16:10编辑过]

) ~* L: b+ e( k7 @- _

该用户从未签到

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

本版积分规则

关闭

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

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