下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2003-10-31 23:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> * w: N6 [; n8 y5 f) H p; EnableButton ALL For bbs.xsclub.com 5 f! E! c$ t! q3 p; by 游侠无极限: V0 S) D& x' V$ k2 K1 l ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - X2 k3 H E9 `- s; EndableButton.asm 9 }8 y8 b9 @$ v0 M7 c6 t; 基于对话框资源+ m7 M. H/ N7 {- s/ z7 b1 Y ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> " w( _" e1 u, \; h% t% P .386 ( v0 J, ?3 B7 i% x0 S .model flat, stdcall 3 b; T# y# d8 ~8 W0 U option casemap :none5 \0 f2 u6 {, P m0 C ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> % Q" Q& w! _! }, ^) \2 e; Include 文件定义 ( C3 l2 S8 Y7 [0 w$ a i- |; S;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 C5 L7 r5 h: f. w5 finclude windows.inc * b. f5 S( C; z6 W5 I. iinclude user32.inc' y' [' ]4 ]8 Y8 w includelib user32.lib , T% U* V7 N; Q8 N3 Q1 Kinclude shell32.inc/ T# f' ?& W$ m! E0 b" I$ L includelib shell32.lib' s$ o' H3 ~& O E4 P include kernel32.inc7 s7 B0 m, P3 z" ]/ ^* m/ j includelib kernel32.lib + C+ g: { ?+ R; ?$ {6 \;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6 w2 x) w' q/ {$ ]" m ; Equ 等值定义+ }8 s4 h4 x+ D ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 6 v3 t% {+ g2 s' tICO_MAIN equ 104 ;图标 " Q1 W9 E* D# Q1 W: iDLG_MAIN equ 101 ;对话框 - l5 \' o/ g; w# A: z* c% L( U( \EDIT_MAIN equ 1002 ;编辑框 ; c, l' ?6 [3 g+ ]3 c9 Y) O! }ID_ABOUT equ 1000 ;关于按钮 6 K' k: x: C3 p* w) E( ~;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> : v3 j4 d; s. n9 Z( W- W; 数据段; L3 d% K8 A( g* n3 F2 B ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3 b. q9 e% L& [! a, e, Z) W .data? 2 H! K3 d H3 v& V7 o) r* e2 G7 U g1 K hInstance dd ?/ [' J# |) z$ o( N G7 a: v/ S& @4 H4 H hHook dd ? ' j6 ]. [ j& r+ T/ ]6 x* R- rhWndMain dd ? 3 ^' S( w4 e6 V. yIsStop dd ? & J- i# z3 S: l 7 P: O+ Q5 P* B# H! g( w6 j7 h .const* r* X5 s" I7 Q" b szStart db '启动',0( A! f0 j( T# ~ szStop db '停止',0 5 ]1 a3 }) i. sszCaption db 'EnableButton',0' S* ]) E4 A$ T1 i& p/ U" E9 X szInfo db '版权没有 03.8.20 游侠无极限制作',0 % r" p+ w; g/ v0 W2 Q) ~9 L$ VszErr db '安装钩子失败,原因不明',08 k& j3 Q$ v, D9 s szWnd db '%lxH',0 ( d p( x4 V$ E: h( ?8 E;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; H O& r/ r3 c* d4 [' M3 P' Q) E& ~; 代码段) N! w8 F, h& v/ w& d ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 7 G' U9 u# L8 }3 Y1 ` .code: v3 J# l2 s7 V0 \# z ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>( T- Q* a, T( b% r ;钩子回调函数( [9 f/ C' e& M* F0 f, [( \; c ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1 W, n5 n; q: }& i- Q_HookProc proc _dwCode,_wParam,_lParam ; \2 O& Q% e' I local @szBuffer[100]:byte : Q6 @! R9 C8 ^3 U- a invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam ;钩子链传递 & y3 E/ I2 [) ~4 n: C: R% Y pushad 5 o, r# T8 ]3 ?7 R- X* n! C .if _dwCode == HC_ACTION ;Windows要移除一条消息时# a& k& l. b. X5 Y mov ebx,_lParam , j% \! e6 G5 e6 \- Y8 `* x assume ebx:ptr EVENTMSG& F4 P H# A' i/ a3 [$ H. i7 X8 Z .if [ebx].message == WM_LBUTTONDOWN 8 J" @9 j) l% g+ t1 \& f mov eax,[ebx].hwnd ;取得当前鼠标所在控件句柄4 x( m" `1 W+ `1 E+ x) b. B invoke wsprintf,addr @szBuffer,addr szWnd,eax 7 h% d* k8 q ?- D: W: ]" Z invoke SetDlgItemText,hWndMain,EDIT_MAIN,addr @szBuffer ;显示句柄 & q) s3 j) H* n invoke IsWindowEnabled,[ebx].hwnd ;判断控件是否无效* a* j- T3 m5 ?1 d .if eax == FALSE 6 J" N" N! _8 c0 J* \ invoke EnableWindow,[ebx].hwnd,TRUE ;使控件可用 ) E& D) q; K% H .endif : x) d% P% ^ x- G4 R ;.endif 7 p; | z* R( s9 i5 Y .endif+ l6 f5 D3 i3 `) @& \/ k assume ebx:nothing+ f0 O+ S$ J' T0 }6 D: b# r+ d5 [ .endif M, T2 l) l% D# } % g, Q3 W ]7 d( ] popad 1 q% ]+ w2 |* {% _ xor eax,eax 2 k9 P5 U" e, Q' [( G3 X, B ret * T) l" D! o7 I- p_HookProc endp : H* G2 j( h, f; f" {;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' Q* o# o$ ^" U / a3 e/ Y3 i' b! E. p! T_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam A& {1 v( C3 c$ H# Z Q : Z A0 i+ g9 d' z6 R& z. T mov eax,wMsg7 c0 h$ J: B# k8 o6 B .if eax == WM_CLOSE 5 z; p- F" L0 \1 l$ E$ i .if IsStop != TRUE 2 ^$ c* |4 J6 d2 G4 E) {" ^, v8 B invoke UnhookWindowsHookEx,hHook ;卸载钩子 5 f6 t" _) Z2 |2 _4 R6 z" b .endif 4 H- U+ H$ {7 ~; n: A invoke EndDialog,hWnd,NULL 9 w3 f$ j) E2 W6 q% G! ] .elseif eax == WM_INITDIALOG ! i. L. D1 z3 A4 l* p invoke LoadIcon,hInstance,ICO_MAIN+ n. b* S* O- W: Z invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax( y4 y) f. {' r- @, P invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE ;窗口最顶层 0 u m& \9 i) x* |3 l# U* \ mov IsStop,TRUE2 z7 c. h, P* r+ ]/ l1 k1 C4 | push hWnd v' d" P$ Q8 p/ N* ?4 o7 d- v# {$ M" v pop hWndMain 2 `+ B4 e4 W: R F/ n" K* I, x .elseif eax == WM_COMMAND3 x4 r0 D; m) r, ]% [' z" R mov eax,wParam& E) M( @* |# g. V .if ax == IDOK, F' @) `- g: ]( `9 a .if IsStop == TRUE . ~- k, ^1 A3 _ invoke SetDlgItemText,hWnd,IDOK,offset szStop' p6 E+ a' X9 J$ ~ d* b" i% b invoke SetWindowsHookEx,WH_JOURNALRECORD,addr _HookProc,hInstance,NULL ;挂钩,日志记录钩子 $ H* b0 @4 O- T* d, p .if eax 4 L! `' Z5 L# u M9 a* I& c mov hHook,eax6 e% a' b; ~% y2 J5 b1 E .else ;挂钩失败 2 h9 _: `1 s1 R4 N invoke MessageBox,hWnd,offset szErr,offset szCaption,MB_OK or MB_ICONWARNING ) E2 Z: s+ A# h .endif % t$ m# o: e$ V3 i, q mov IsStop,FALSE 3 g% m4 {( L1 p* b .else 7 N8 c+ y3 v& p( ? b invoke SetDlgItemText,hWnd,IDOK,offset szStart) |9 z; d) t7 q$ H invoke UnhookWindowsHookEx,hHook0 F: l; e% T& G mov IsStop,TRUE # Q: |$ y5 g4 m .endif % h* b& }! o/ u+ z$ ` .elseif ax == IDCANCEL1 A5 P, L: |3 { invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL/ Q' t, a f! S2 I; _) L .elseif ax == ID_ABOUT0 a% S" w5 t5 g! d" C* { invoke ShellAbout,hWnd,offset szCaption,offset szInfo,NULL ;关于对话框% l3 p5 s- R5 N/ ~2 y8 r .endif7 |, T5 \8 f: X3 s .else7 Z$ b( O: V& O0 ~! y, f! U0 U g/ b& I mov eax,FALSE 5 l3 S1 |1 f7 K u, W7 T" ] ret 7 H! m6 X: m$ p0 `/ i .endif4 l0 y! B+ Q/ ?' j; \ mov eax,TRUE4 |6 Y4 Z% n& E$ Z: q/ h& J. o" d ret - i9 L5 l) z" k$ P$ [. N) l/ P4 z _ProcDlgMain endp & Z! Q$ i h8 a8 H . _, k" D# N: G, f' q" D. \;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> " ^5 p' O& X0 Z1 G# \start: 2 V& F! j/ ~, q) x# X: a% K6 W: A2 { invoke GetModuleHandle,NULL* m9 B9 R1 a) V9 N% l0 L' _2 b mov hInstance,eax # W9 x4 ~; u5 k4 g2 f invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL 0 l: F4 ~& o8 a4 g1 a z! ? invoke ExitProcess,NULL 4 I1 e: d# L) a9 J;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>- y& ~0 p4 ^- C' g end start " H0 l4 @( q* {8 H0 f; F 2 r; e7 @: p! i+ R1 W }4 O+ P) A8 k8 s 界面看下图片# [3 n; c8 R# w- A3 n/ s' } ( n! f; O- i- j# x6 f+ y , H1 v e7 ~9 O7 o, n : E& r; M! G) C* Q- \4 a+ K% [ % D) I) ?' k/ T- `0 D6 P$ F: E8 P! P8 x( f' e 5 `4 L8 G! A g/ k " e+ U1 T& v' w% Q! s
[此贴子已经被作者于2003-10-31 23:37:05编辑过]
: p6 n9 I2 N7 y `6 I! Q9 K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
bigfoot 该用户已被删除
2
发表于 2003-11-1 11:10:00 | 只看该作者
搞了个WH_JOURNALRECORD hook,大概是把变灰的控件Enable,有点意思
9 \- ]) Q- R4 Z' {! u6 {4 |3 `! P不过这类界面程序实在不是汇编的强项,用了大量的invoke  ,整个程序结构看上去和c别无二致: M4 |- Q' J7 A$ N6 ~* a
汇编的强项不在这里,楼主如果想显耀汇编的强大,这个例子不怎么,' p" A7 B+ o1 `( w; ~% V, d
再来一个强一点的原创瞧瞧 ^_^$ B9 w# X! n' l5 s- W; r

+ r3 U5 i% m  R4 t" G4 T+ R$ T1 _0 S& K9 [7 @7 Q
2 ^4 Y' {- T0 d  h
[此贴子已经被作者于2003-11-1 11:16:10编辑过]

4 Q, \' L0 T$ Y$ l  o

该用户从未签到

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

本版积分规则

关闭

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

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