下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2003-10-31 23:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 S1 F+ ^2 D; E2 N+ K; EnableButton ALL For bbs.xsclub.com& {) U, E `2 h ; by 游侠无极限 ( F% `% X" I" N4 p$ q; u( |;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" r8 S C6 M: o) {0 N% o( \8 ] ; EndableButton.asm / i7 N# }9 v1 i8 y* H; 基于对话框资源 ( X/ Z& z. ]7 T! i t; f;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>) Q( A( M* O$ Y8 z .3865 n. [7 S! e1 c .model flat, stdcall: z& j# q3 P7 m9 ]5 ` option casemap :none ) g5 a8 v6 _- k! k- J8 O;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>& ?) P$ g8 I6 f' B& Q$ `" C, W ; Include 文件定义 6 ?( I" F6 \$ |! Y) @0 F;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' F6 V" J3 w9 M include windows.inc, v/ l9 t4 Y+ o/ q include user32.inc ' }! o8 P0 a: oincludelib user32.lib 5 p2 U+ w/ J3 f: G9 J9 n; Rinclude shell32.inc , s1 g; Z5 j8 e' f' P9 Kincludelib shell32.lib 4 j) V1 L) n1 einclude kernel32.inc ( v0 ]3 t1 Y$ Jincludelib kernel32.lib 0 M; k$ ? B* i0 \& j& g;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> . Q; V0 i. I& \! U; Equ 等值定义 5 z. }5 G0 ~/ n;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+ V1 y' D5 x+ d# c ICO_MAIN equ 104 ;图标9 q" m# {# x3 l4 z% c' \# r& ~1 K2 r DLG_MAIN equ 101 ;对话框 # f8 q2 Z; \& Q* X3 _EDIT_MAIN equ 1002 ;编辑框* s2 ^3 z1 e& |' v ID_ABOUT equ 1000 ;关于按钮 ]3 M* i+ N8 [# u ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" S0 e* V( V- j+ b- D9 q' l4 S ; 数据段) @6 P6 w- P, I4 ^4 r ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>2 x! v" u2 ?) Q( A( A .data? 6 r2 N* Q7 y) g7 {; q 2 p; M( {1 q3 [, i% Z F* X) ~hInstance dd ?) ^5 T4 S$ w8 T8 B hHook dd ?3 ^* m) i4 r9 F5 ^; [, F hWndMain dd ? : t5 {* v. ^. Z8 SIsStop dd ? ; `9 d/ f4 i1 u* A( {( Q! H& t$ p0 t , r6 X- \, @4 U& L) ]% Z! V .const; }) _8 _1 Y: @) U* } szStart db '启动',07 h2 I. Q5 r8 i$ h- C szStop db '停止',0 ' Z3 x' k. h e( J' O& qszCaption db 'EnableButton',05 H9 f e% y! K3 Z& J4 f szInfo db '版权没有 03.8.20 游侠无极限制作',0& {' V% f3 D: y szErr db '安装钩子失败,原因不明',0 5 ]1 q% N) o3 I# N ^szWnd db '%lxH',0: |3 t/ e2 t3 I6 ^$ U4 U ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>. N' b% B6 `7 _% Q ; 代码段7 z) Q* F' ?8 r' ?, O) h) B3 K1 F ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> % R2 E9 ~. H: { g .code0 G( M! t1 b& @5 _9 C( J& K0 Z) S7 t ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>) R s! \. T$ m2 g+ S7 m ;钩子回调函数) M5 \8 Z' P7 f2 C5 M% X" f6 R. r0 w ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 8 a* y/ |) ]( P6 w2 m$ d_HookProc proc _dwCode,_wParam,_lParam 6 w! A2 ^9 `, C3 O) t local @szBuffer[100]:byte/ [6 F0 v$ [. C+ t invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam ;钩子链传递 1 J0 w+ }8 n( H) A M9 t! L& g pushad / }0 @1 W6 `5 W6 ~ .if _dwCode == HC_ACTION ;Windows要移除一条消息时! I8 I# s- p7 {5 H% Y mov ebx,_lParam9 K" ?9 C) W9 I6 V# s assume ebx:ptr EVENTMSG - _% K( K' @" n% ]$ v .if [ebx].message == WM_LBUTTONDOWN 3 m1 n( g; }8 f5 ~5 t! n, p mov eax,[ebx].hwnd ;取得当前鼠标所在控件句柄+ m$ p1 j) J4 _ invoke wsprintf,addr @szBuffer,addr szWnd,eax: M% I/ l0 q! B" @ G invoke SetDlgItemText,hWndMain,EDIT_MAIN,addr @szBuffer ;显示句柄 5 j) A$ a( u* G8 a# V; I invoke IsWindowEnabled,[ebx].hwnd ;判断控件是否无效 : d5 B, c, J/ \$ e* M. o' C j .if eax == FALSE5 I, [6 q2 G2 a2 f8 T) D" v; A2 d invoke EnableWindow,[ebx].hwnd,TRUE ;使控件可用 ! l% r- ]% N: E" O | .endif - l1 U8 K4 }" c6 j1 W* M ;.endif $ h# M6 X: L% d' _( l( H! C .endif! \# h$ O3 U( o, E7 l8 `5 ` assume ebx:nothing* B+ u- X- C) V: f% v0 `0 r .endif& g$ D) z* D! z6 j % k$ j+ o6 P7 I2 ^) G& ^ popad ) [7 c2 \+ L. u0 _) a- j6 c xor eax,eax: J; |( @4 N- Z ret & {, C0 s) t0 a0 s- | k_HookProc endp: U9 ~* A8 C) v' @3 i6 n4 B2 y& Z ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ( L8 e2 ~( [( J9 @0 S+ A + G2 z: g3 Y: Z_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam, C0 a5 Z; F# [% g9 D. [3 ^ 9 a% J6 x% j# v1 _7 x mov eax,wMsg4 O4 b4 i0 Z5 W7 u. z .if eax == WM_CLOSE ( f; W3 B7 V2 o. Q .if IsStop != TRUE + _; Z1 C& q& @2 g5 k1 H invoke UnhookWindowsHookEx,hHook ;卸载钩子 % E8 ]" g; k1 g5 b9 _) }7 X! ` .endif) k$ S3 z3 e W8 _: _- N invoke EndDialog,hWnd,NULL 2 I# @. o+ l/ H9 R: M0 P0 v .elseif eax == WM_INITDIALOG9 x* Q7 i9 I, w3 C/ \1 u2 _ invoke LoadIcon,hInstance,ICO_MAIN ' v" m! t+ w3 S: c5 w, p invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax ( `+ a2 c( f# P4 M invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE ;窗口最顶层 & C: R; Y/ f* X1 y mov IsStop,TRUE 2 B* }- H% }& o8 i* U push hWnd * t3 R9 Y- g) h0 S pop hWndMain$ G4 s P* O( _- y2 J( E. { .elseif eax == WM_COMMAND3 K' `4 @/ [, O mov eax,wParam 7 \+ P! Q* z( H0 I0 ` .if ax == IDOK3 c; u$ j9 y. V# C .if IsStop == TRUE H9 \- Y$ g, o& [+ w$ b invoke SetDlgItemText,hWnd,IDOK,offset szStop 4 t: j' E* `% F invoke SetWindowsHookEx,WH_JOURNALRECORD,addr _HookProc,hInstance,NULL ;挂钩,日志记录钩子, @. J) J5 d" g B .if eax4 i$ S( h0 S/ J: Q8 ^ mov hHook,eax, |& R1 f: \- R0 K: a7 ? .else ;挂钩失败9 c% C4 q4 N# w. Q+ I invoke MessageBox,hWnd,offset szErr,offset szCaption,MB_OK or MB_ICONWARNING 4 ?- F0 f$ Y5 ?* V5 x$ [0 ] .endif * p, \( r- p0 G7 x0 \: ]! K mov IsStop,FALSE ' w2 u' h, j# x# P% }2 p2 \, ~ .else . }3 O; E& q- j* i invoke SetDlgItemText,hWnd,IDOK,offset szStart" v8 n. N: M& r invoke UnhookWindowsHookEx,hHook 5 o; Q3 J7 R/ y2 `4 a3 f mov IsStop,TRUE & y2 _; a6 U/ b7 d( D' W .endif 8 i) F+ S# [/ Q U* L. v; n .elseif ax == IDCANCEL 5 y' u+ Q' Z" \9 ]8 R invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL ( G" R+ m8 R) g% T8 j .elseif ax == ID_ABOUT( C8 ?* }. I9 x invoke ShellAbout,hWnd,offset szCaption,offset szInfo,NULL ;关于对话框& i/ X0 t- ]/ x .endif' b( _9 Z+ V8 @5 F- N* `2 B .else/ l |& @8 J; [5 Y# r( D4 c5 c mov eax,FALSE ) @/ N. A5 v8 e* r1 L, U7 q8 f ret+ b0 O3 B" G D; l .endif / Q% W) V9 Z! K# O6 `: y mov eax,TRUE : p- ~" a* W) Y9 T6 z ret2 ?3 X: l9 T3 @9 J / [' p# p/ ]' l _ProcDlgMain endp% ?: p/ T+ s& ^* ]+ @' C% m Z h _+ P* {- H: `5 s% D( b ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> $ P8 N9 w' i- |. T9 u4 wstart: 9 I9 g+ E8 q9 |" s! R& z6 i! s; T4 W invoke GetModuleHandle,NULL7 o. ~5 Q. V/ u! Z' m; l+ w: Z mov hInstance,eax % r% v5 q( ?* N" A% V2 ]+ S; [: u invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL / ~, W9 B( X. A+ W9 X+ B invoke ExitProcess,NULL ) h( H5 x( j- `;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>2 }; B. G* j! v( F7 C" v end start - F- ], {) q3 w3 i- ?# w" D . a, t2 M7 ~& H; @* j $ L+ y3 R, A- e% {, g界面看下图片 - k& D( y& |4 R$ P }' b q8 @& }0 Q* P& o$ @/ v9 A/ J. S9 }8 [* f1 w ' t# O* e. W" J7 E * a- m' u% L+ H! c8 Y" n+ T+ o- w- \( l8 Z 4 Q7 z l5 N) d* J( E0 W. e- U% @
[此贴子已经被作者于2003-10-31 23:37:05编辑过]
) o% m2 U, g3 W& L9 U o9 y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩 转发到微博
bigfoot 该用户已被删除
2
发表于 2003-11-1 11:10:00 | 只看该作者
搞了个WH_JOURNALRECORD hook,大概是把变灰的控件Enable,有点意思5 G( Q! ~/ u: r/ x  T
不过这类界面程序实在不是汇编的强项,用了大量的invoke  ,整个程序结构看上去和c别无二致
6 b( L1 Q1 y8 Q& @& t汇编的强项不在这里,楼主如果想显耀汇编的强大,这个例子不怎么,, G! q9 M. E' W0 d0 i6 B
再来一个强一点的原创瞧瞧 ^_^. H7 l% ?! M: x

1 G. L8 S* |: R" m4 N3 h( G2 @
' ~, i: C8 }/ P; x, J* X. Y. y$ d" J$ r' n8 p4 q% p) W
[此贴子已经被作者于2003-11-1 11:16:10编辑过]
8 N+ a4 r: i: N  n1 _

该用户从未签到

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

本版积分规则

关闭

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

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