下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2003-10-31 23:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> , W3 ]( q+ F( k/ c. M" @7 K. n- y; EnableButton ALL For bbs.xsclub.com . {' Z$ H5 i/ K7 p; E0 W; by 游侠无极限! Z& u" K* u2 s( @$ Y, d ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' y* k$ h8 } ^8 j5 l; EndableButton.asm0 I- a1 f; P" F; v; T" j& h/ o ; 基于对话框资源6 ^- A( t' w) R. i0 d ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' C+ k* i% H9 |) F9 l6 e .386% H: ^* Q" Q H; R .model flat, stdcall $ v9 `! J, E, x. |' ~ option casemap :none/ k. A/ ?) O- w ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - } u9 N" ^8 U* g V2 k; Include 文件定义' W, m' y" W C2 S2 c/ I ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Z2 o9 }1 X4 n E; J include windows.inc3 N+ d- L' L; L1 {% s! r include user32.inc 6 Z" @3 V: F$ Q- f. ~: Cincludelib user32.lib 5 t M# ?# O e" j1 L$ dinclude shell32.inc0 d6 h2 [2 ?, L5 R( T includelib shell32.lib M" N2 y- _, f8 o9 g% { u include kernel32.inc , y0 N! X! b4 t7 R, i: f* F: Tincludelib kernel32.lib - y: K/ @+ Z3 W8 z- x4 X9 R;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> * Y' A5 J7 q+ ^: }7 s& K; Equ 等值定义 6 h% e0 @4 j5 m" G# f# M) G;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' u' Y* u& Q0 W1 L! @! U ICO_MAIN equ 104 ;图标 % L8 u( S" t4 d lDLG_MAIN equ 101 ;对话框 ( H+ w: D2 J- @' N1 m) |& V2 A3 b0 f p- HEDIT_MAIN equ 1002 ;编辑框 ; x( B/ L) ]7 t% R$ w( Q+ ^ID_ABOUT equ 1000 ;关于按钮 # l4 _. Q9 Z7 {1 W, _1 |;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> F6 _- P* a% j5 ^ ; 数据段 7 T0 C. B4 p* K;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! q/ o1 {1 q) o# x) a+ J2 I .data? 7 @8 a, }' u! _) X9 u/ P / j+ T) a. g8 W7 f; RhInstance dd ? $ J& f/ f8 ^4 p$ [8 Y5 r8 MhHook dd ? ; @# C: d% W g7 ~& v: lhWndMain dd ?. w" z. o/ j# h4 X1 E IsStop dd ?# d h# i: m8 E: A. k5 G 1 X" h4 R* s4 k' B2 b" l .const9 U( S5 @" [; Q4 Y& c! N szStart db '启动',0 * _, w$ O: X2 b/ H: G8 p" _szStop db '停止',0 - C& t2 f! q4 U3 U& BszCaption db 'EnableButton',0. K8 f* }4 Z2 A' ~" ]4 P9 T) ?" P szInfo db '版权没有 03.8.20 游侠无极限制作',0 2 h+ f/ d2 }) O R+ mszErr db '安装钩子失败,原因不明',0 E* j2 ~& E$ K szWnd db '%lxH',0 ' r- g4 l- w' J, }, A$ ?;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ( u4 E8 ^$ M8 z. @! l/ A: M# y; 代码段 . l. K7 d% _1 d7 _0 M# w3 S" Q: p;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 8 p1 `4 Z) X, v0 \5 C) Z W2 Y .code : a, ?8 m6 {# |6 g;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> / {* S7 F: W- o& B: ? C# q) |;钩子回调函数 1 U3 {" @7 X' c* {;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; @ Y/ ?$ x5 R3 ?_HookProc proc _dwCode,_wParam,_lParam & s: w9 E( ? r local @szBuffer[100]:byte8 P6 B' W; C% r9 |: { invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam ;钩子链传递. h: ^( c5 Y4 [! g, v- C3 Y7 M pushad 7 d6 }; R( r+ o0 E' i" m .if _dwCode == HC_ACTION ;Windows要移除一条消息时 - j5 Y! k% v* S5 u1 f1 L mov ebx,_lParam * s' T/ T- x" ~" v }$ C3 s5 X/ t! x assume ebx:ptr EVENTMSG9 U/ u/ U9 N' ` .if [ebx].message == WM_LBUTTONDOWN6 }8 a, J6 C: e0 ~+ ^( q mov eax,[ebx].hwnd ;取得当前鼠标所在控件句柄* \$ P( y1 Q. u4 } invoke wsprintf,addr @szBuffer,addr szWnd,eax+ C$ v/ y) f, Q' A2 f invoke SetDlgItemText,hWndMain,EDIT_MAIN,addr @szBuffer ;显示句柄# G* ^; q6 z' q% T$ z; \* o invoke IsWindowEnabled,[ebx].hwnd ;判断控件是否无效 8 ?8 x5 J' }- ~( a .if eax == FALSE+ ]( j0 O% M' F/ ~/ q invoke EnableWindow,[ebx].hwnd,TRUE ;使控件可用& ^/ B: b0 M& v, f# D. ?& n .endif2 p0 s4 H: O& b; j3 ~ ;.endif- v- _3 O* I& i .endif 5 a2 C2 L% ~3 t assume ebx:nothing T! L4 X4 L; P, r .endif 8 n/ w5 f# X& ^" A0 S0 f. e5 j6 Y$ Z* M# h; N popad8 s- I$ ]9 s& F! z' E xor eax,eax8 m' ~7 y" K* Y% M9 M ret 4 _+ _/ M v2 W D: y/ O_HookProc endp3 e; `3 d2 @6 R5 ?; U ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ) O$ g; g3 a: h; ?& m9 Z 4 O& R1 f# h0 S_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam ) @9 ^( r& a" R4 X$ z) Z / j9 k/ Z9 n* C3 v3 a) ? mov eax,wMsg1 q" c! x& o& N2 {" A8 |& u .if eax == WM_CLOSE + ?' o% x% _$ B .if IsStop != TRUE . E9 E0 K* ?6 r8 h8 q& ` invoke UnhookWindowsHookEx,hHook ;卸载钩子- {1 O$ U0 q0 M( A- Z: M .endif; }) k: G+ I4 c, \ N# [: j u2 h$ V8 k invoke EndDialog,hWnd,NULL- f2 R; ~* I8 _9 a7 T% a; b% s .elseif eax == WM_INITDIALOG 1 d# G) t2 j8 U; g invoke LoadIcon,hInstance,ICO_MAIN z+ `) m& ~5 l" w# c& E& Q# K7 p invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax! w( c% J! B5 Z8 d- q invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE ;窗口最顶层 * a, P1 p! D/ [3 V mov IsStop,TRUE / j' n: v! _, ^6 W- O1 x push hWnd & `- k3 |+ m) |, M0 O/ }+ t/ P pop hWndMain ) B0 a4 ^& D2 O& h8 h( _) x .elseif eax == WM_COMMAND ; y: K# s# J# |9 v: n: ~ mov eax,wParam % p$ S1 q" Z& y4 u; I .if ax == IDOK# F. M; p0 u5 { .if IsStop == TRUE ' m# l0 o/ S& E1 W' W invoke SetDlgItemText,hWnd,IDOK,offset szStop : S' ~9 `; f3 u5 @9 M8 i( S invoke SetWindowsHookEx,WH_JOURNALRECORD,addr _HookProc,hInstance,NULL ;挂钩,日志记录钩子 % [+ b4 I" T5 X8 K3 K7 U6 o( g .if eax 2 z* k: m3 ~# h2 M W! ? mov hHook,eax . \) o2 y0 |! Y .else ;挂钩失败" @8 O' y* P4 _( }# E2 Z0 [( |2 w" w$ G invoke MessageBox,hWnd,offset szErr,offset szCaption,MB_OK or MB_ICONWARNING' ~9 S# P5 C$ Y0 h% @; S& I( R .endif 5 M5 t1 X( @& ]) ~ mov IsStop,FALSE/ `+ d# M g# I/ h* G .else ' ~4 ^3 A' M4 r& {( n invoke SetDlgItemText,hWnd,IDOK,offset szStart 5 h6 ^& ?$ x* t* R* }! } invoke UnhookWindowsHookEx,hHook3 I% R5 u+ G* H! B' _! f3 o9 Q mov IsStop,TRUE 1 L( N* ~. K j) H' z .endif3 k1 a3 X9 K9 c6 g. _ .elseif ax == IDCANCEL 9 _1 x2 Q$ D. j* u: v invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL * R+ }5 V( o% @' Q( }$ J .elseif ax == ID_ABOUT7 K9 r2 f2 Y# h( J invoke ShellAbout,hWnd,offset szCaption,offset szInfo,NULL ;关于对话框0 v( P7 l8 C* `/ {& L .endif: E2 R! n/ b" L% x! W .else ! Z G9 S" k+ s* ]5 k, i# | mov eax,FALSE 8 Q* g7 m4 M8 E ret3 r- A: F. R" z7 C8 G .endif 8 H: o; g- B3 e0 q4 o* t mov eax,TRUE 7 {5 d I- q. B" i ret + y V# O/ B1 Q# |+ o2 n3 [! d" g: V: N _ProcDlgMain endp& @ W2 W* B' J1 [ s' b3 { ' f% B. F1 N5 d1 E7 o+ u;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> . I; k( |5 x" wstart: P& i: q. f/ e invoke GetModuleHandle,NULL . J( H/ X& W" N) d2 [* s mov hInstance,eax3 p; H- v) D0 I3 R# n: x6 N7 h invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL/ _! |+ i1 H5 S0 a8 P8 g1 I# T4 t invoke ExitProcess,NULL6 Q! Z# r( W: h! Y# p# u% q ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>8 j( h# _* q+ i" M end start ) x6 k" v3 z7 Y. s. C. q/ {0 d: V ! J; U$ h8 T1 z* [ ! B( a# ?5 J$ n1 i6 H/ ~$ m, K- }; [界面看下图片. S7 x- ]; R% J & f" g: S. [ i4 u0 } ! z8 L- V/ ^) Q% i: T( b/ M! n3 s) q' m0 N) g 9 i2 ]4 Q, p! a3 Z% i + R$ |& x4 k I( V 4 K! G5 a6 R6 N; p5 j6 e 2 [! S( o3 m6 Y+ L% y
[此贴子已经被作者于2003-10-31 23:37:05编辑过]
4 K q: Z, g( w4 }# ?' j# a/ d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
bigfoot 该用户已被删除
2
发表于 2003-11-1 11:10:00 | 只看该作者
搞了个WH_JOURNALRECORD hook,大概是把变灰的控件Enable,有点意思
8 o, r+ p- t, W% ?3 M不过这类界面程序实在不是汇编的强项,用了大量的invoke  ,整个程序结构看上去和c别无二致
* `+ p& L0 n0 w3 b9 L" b, D汇编的强项不在这里,楼主如果想显耀汇编的强大,这个例子不怎么,
0 I& ]- n4 L2 V! d- {1 |再来一个强一点的原创瞧瞧 ^_^& Q" w9 W* r& p& L% q' O1 K; s' ]; N

( G+ ^+ W+ s* g, z3 X3 E1 }8 d/ G* s6 J0 l
- N9 N& }- f/ `1 ~' x2 O
[此贴子已经被作者于2003-11-1 11:16:10编辑过]
9 Q. C/ M' |! {" X$ ?" T% @5 u- }

该用户从未签到

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

本版积分规则

关闭

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

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