下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2003-10-31 23:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> * W8 l. r$ p0 v; EnableButton ALL For bbs.xsclub.com " t0 A9 c3 {3 a; by 游侠无极限 9 e5 y4 k- x8 L8 H: X0 m7 Z;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/ ] N, Q" \/ h- ]8 Z ; EndableButton.asm4 j4 C3 r. a! Z6 ]5 y2 P+ l ; 基于对话框资源 . a ]% @4 Z9 ?- x;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>># Y: [) }8 @3 \ .386; M) k) j; G: i7 ?- J% i .model flat, stdcall ' M" ?+ _( X, U1 O% f option casemap :none , U6 ~# v4 ]9 I$ u+ X+ k;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3 t. L2 t1 k% q% h ; Include 文件定义 ' i: I# S( _2 A;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3 O, Q) n9 J9 K- l: z. Kinclude windows.inc , @5 \5 \) ~7 p" g4 w3 n8 s8 W Ginclude user32.inc ) r; x" \, h! {5 ^, x+ o pincludelib user32.lib* g- M& r5 v% y, ?) X& _/ j) T include shell32.inc% e4 B" q, T/ y1 g3 r+ H includelib shell32.lib 1 A1 e6 _9 U5 }, c/ d$ yinclude kernel32.inc 6 a1 {8 x; v( Z- ^( Sincludelib kernel32.lib8 D4 G) R& G+ @7 z ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> s% O4 J: A( J& C0 C ; Equ 等值定义 & }( S( \& P0 M;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>5 }- U* J# D' ^4 B) d7 ~ ICO_MAIN equ 104 ;图标 & v9 C3 r/ x5 }( T2 yDLG_MAIN equ 101 ;对话框* X* [: b. b4 C EDIT_MAIN equ 1002 ;编辑框& i S* s, d! ^9 }+ a ID_ABOUT equ 1000 ;关于按钮 + t+ Y3 N Z0 [! [- M;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>* f+ p$ E7 x3 M4 h# r ; 数据段 , m% ]; O2 N+ Z- Y4 }6 K;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1 |" N& v$ P: D e0 S# b$ U( ^ .data?- l, I4 {$ D- M" a' E. P ! j+ F' Z6 ?' I0 ?7 e2 WhInstance dd ? 9 d8 y1 c E* G, H. Y! ]hHook dd ? 3 o$ q$ L {* B* w) _% w* zhWndMain dd ? # P+ e7 Q/ Z( f3 ?% k* aIsStop dd ?1 v' J: S! F4 E: K7 I( m& ~ 3 }2 p# o0 V1 p; d9 o' E- ]# l1 P .const* ~9 d$ B2 I* ~1 h9 x szStart db '启动',0 9 a' M+ J; n; RszStop db '停止',0 8 U5 W) V; `. {- J" BszCaption db 'EnableButton',0; h: K& J6 X. g! ?# V$ r szInfo db '版权没有 03.8.20 游侠无极限制作',0$ s0 D+ ], v" e& O Y3 R" s8 i szErr db '安装钩子失败,原因不明',0 ; A5 u5 U4 c+ U6 P; e$ I6 KszWnd db '%lxH',0 5 j0 Y" g+ h, R8 v9 U+ T& h;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>># l$ }6 S( B. B1 U4 `9 [. Q! F, ~0 f" s ; 代码段 9 f) o4 f9 J0 s* c* B;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> , z! R4 {) d5 n' r$ ?0 l .code 2 F, y& N8 Y: C' [;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>* N" j, o( D& j' M/ X8 h' D6 N ;钩子回调函数, L5 D: K- t0 c- ? ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" y Q( e O6 [ _HookProc proc _dwCode,_wParam,_lParam ! v' R7 _+ F" S1 j/ S, ? local @szBuffer[100]:byte & i, N6 }+ M5 t, N0 v invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam ;钩子链传递 ( E1 T8 s3 J, Q1 \* K, F+ L2 Y/ y pushad. [8 H) X( N% r+ d8 E# l$ N: D0 r .if _dwCode == HC_ACTION ;Windows要移除一条消息时 0 ?1 J- r; g; C# J8 a0 D mov ebx,_lParam1 ]0 x5 S9 U7 u- h+ y assume ebx:ptr EVENTMSG ! w y& L) I: Z2 K5 J( } .if [ebx].message == WM_LBUTTONDOWN ) a [! t3 C9 x8 w) S mov eax,[ebx].hwnd ;取得当前鼠标所在控件句柄# X: ] I! a) O8 N2 t$ [ invoke wsprintf,addr @szBuffer,addr szWnd,eax . R- Y: D# j+ X4 h# p invoke SetDlgItemText,hWndMain,EDIT_MAIN,addr @szBuffer ;显示句柄 . {: _7 p, w1 ? invoke IsWindowEnabled,[ebx].hwnd ;判断控件是否无效! E2 [& p( v ^* u0 w- I% m, `/ E .if eax == FALSE + Y0 y+ T. M! m- e- \ invoke EnableWindow,[ebx].hwnd,TRUE ;使控件可用 {6 N1 ^) v3 z .endif: y) w, h4 z5 a2 u ;.endif ) c) Q9 x g* i$ u9 D .endif 7 i' @8 h! E9 j! ~: R2 @ w4 \+ f assume ebx:nothing* h: n) l3 Q+ S: f .endif 0 X* p! ^* w2 O& g0 e3 { u, X ( l0 Z- P3 `0 x: @/ n8 `; i popad ! s4 U3 r% l7 g" U$ b' q/ G9 ^ xor eax,eax , B+ l# i5 U2 t6 Q ret" j: o- ` B& G7 n _HookProc endp # j1 [1 M. Y* N# `4 i$ e;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; V% z4 ~, k2 L; O5 ]) i! F. ?5 o6 E. o' D- a/ B: c _ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam7 ]& j8 V! u8 l1 X% q+ p% \1 [ ? ( W0 N d4 k) ]1 D9 C! M% p mov eax,wMsg ' H9 |2 A/ I2 e) ]4 s3 R" r2 E .if eax == WM_CLOSE 7 X7 c _. s6 U- G7 X1 ] .if IsStop != TRUE8 E* {! S4 }( X l% _1 v4 m$ m invoke UnhookWindowsHookEx,hHook ;卸载钩子' ^7 C2 ~' r& a0 r( @/ t .endif2 c* i8 ~' q9 M% p9 E" ]. } invoke EndDialog,hWnd,NULL + ^: m; T2 f9 I5 Q2 `" _ .elseif eax == WM_INITDIALOG 1 f& l& u M8 K# ]" M( I6 H invoke LoadIcon,hInstance,ICO_MAIN/ \" n2 {9 i9 I, ~ invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax1 h% S3 s3 _; k% b S, O invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE ;窗口最顶层* i/ K; W" L, z+ m, g$ j1 _) A mov IsStop,TRUE & |. V/ O1 t8 c push hWnd - }1 i. X' T+ b" h0 E pop hWndMain) `1 }" U: C5 \ .elseif eax == WM_COMMAND 7 |5 ^3 Y# |' N0 ]6 { mov eax,wParam - m8 ?6 k( B4 i .if ax == IDOK 5 p' i4 Q2 E/ W; _: q% x .if IsStop == TRUE7 c- L2 S* V/ ?# P, |3 U8 N invoke SetDlgItemText,hWnd,IDOK,offset szStop8 @& C$ |8 f& [6 v" b: J invoke SetWindowsHookEx,WH_JOURNALRECORD,addr _HookProc,hInstance,NULL ;挂钩,日志记录钩子. a3 _: V+ o( E; E* ^+ p& J .if eax & Y/ C7 o& k3 ^8 }3 U/ _0 C9 c! V mov hHook,eax 1 S6 G0 O% B% p: i4 l5 J .else ;挂钩失败7 a! ^% O; n0 n invoke MessageBox,hWnd,offset szErr,offset szCaption,MB_OK or MB_ICONWARNING $ L0 N7 u, O; v: ^# z) ` .endif; k; p: h5 ?1 x% N, s mov IsStop,FALSE 4 D" O- N W. D$ { .else* x1 T; F6 @: K invoke SetDlgItemText,hWnd,IDOK,offset szStart + `: F& }' o2 p3 X* K" g invoke UnhookWindowsHookEx,hHook! l4 Z$ Z5 m4 n9 p" U3 K7 I mov IsStop,TRUE * p; q& Y/ U7 J; a1 X9 P0 r .endif" K* I1 d! p4 D/ t1 y* k .elseif ax == IDCANCEL5 h. E2 o: C1 o% C; [1 B invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL6 t; F" ~. n- h% `4 | .elseif ax == ID_ABOUT7 i+ N( z8 A: m* @9 N/ s invoke ShellAbout,hWnd,offset szCaption,offset szInfo,NULL ;关于对话框+ E2 \& d$ L+ q, @ .endif! Q$ ~3 e) N, d( l* Y* I4 S .else * F, i8 |" h2 Z9 z {2 u mov eax,FALSE/ o# p5 l$ s4 @. U7 y( t. I" C ret+ S8 i$ c8 |) Q3 U h( {# C" a .endif % p. ~: _- A7 s5 a; }' K4 ? mov eax,TRUE2 [/ ?3 _) J+ ]- Y" y: H' |) H# F0 d ret8 S/ N( x3 ]0 y H' l) _ 4 _: `6 Q- [2 a; B9 A! D" Y) r! {_ProcDlgMain endp7 [, W( R2 a, K. w% w: Y. p ( g, y0 _, @, [# l) Q: O;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' m. U ^/ {. O2 k! ystart:0 D6 t# d# O* B9 Y invoke GetModuleHandle,NULL/ X/ p5 J& x1 G, i$ `' E mov hInstance,eax ) q2 L6 u& m6 d8 O" B3 c) p6 [ invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL : Z! Y' Q0 N- j invoke ExitProcess,NULL( L3 {8 }: ~1 Y# H; X8 O/ n" } ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>5 h/ m$ u4 B; _3 g end start 4 p# _/ h& |5 E ( n: @9 [7 k# @7 U0 e# l2 ]: f1 X1 w" W+ a1 U7 ^ 界面看下图片$ h, s; i2 J8 M+ l; k R 4 f, N5 D0 y6 A/ ~$ D$ ~ j $ p' J m# n6 k" M: \* z5 _5 [0 [, [" O 4 ~" u$ h. D" [: e/ |' y# f) m 1 g# \4 j, x1 e% T$ T6 p. Q " l. C2 o) u4 i' i2 B5 P: x8 _6 \& P7 X0 v: `/ {
[此贴子已经被作者于2003-10-31 23:37:05编辑过]
' R. i3 ^0 V/ n9 P x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
bigfoot 该用户已被删除
2
发表于 2003-11-1 11:10:00 | 只看该作者
搞了个WH_JOURNALRECORD hook,大概是把变灰的控件Enable,有点意思
. x: F! B' d6 a+ O& P8 d2 X- h8 d9 L8 ]不过这类界面程序实在不是汇编的强项,用了大量的invoke  ,整个程序结构看上去和c别无二致
- \8 e9 J0 K- X9 C% I5 A汇编的强项不在这里,楼主如果想显耀汇编的强大,这个例子不怎么,+ k0 {, \* z! V  ^8 g% }' {
再来一个强一点的原创瞧瞧 ^_^
& U* w) K4 z" \- G/ p* o& e6 ^" Z6 i) k& O) u' F# ]" D  t5 E" B+ g

! x9 y) V% Q/ N2 Z% J) `8 e
) x- x* A( R$ f* B
[此贴子已经被作者于2003-11-1 11:16:10编辑过]
5 J% z8 |, U, [, h

该用户从未签到

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

本版积分规则

关闭

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

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