下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2003-10-31 23:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! C/ N9 f7 h ?( Z; EnableButton ALL For bbs.xsclub.com 0 I6 Z1 K K7 F; by 游侠无极限 : u& h2 y, V" P2 G# K9 y;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> : @( z4 ~& E# r6 Y2 {- M; EndableButton.asm" l; _5 @ `" f" `4 ? ; 基于对话框资源% {, ]) r9 N/ f. E ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6 o3 M3 W# Z( G6 Q8 ~& N .3869 r, {! L y. W .model flat, stdcall' B8 c" s) `+ K+ V4 q option casemap :none 3 h( d! Z7 D% j6 x+ M;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> $ P8 R) {& i' V) H3 D; Include 文件定义8 N# ] a! I1 [ ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>* `/ Z' n( k' W' l! K include windows.inc , y7 s0 E: e" D K3 ~9 c: [5 ?: Q. uinclude user32.inc - j5 y% ?: i: Q( d* N2 aincludelib user32.lib : h2 J( I1 K+ K! K2 e2 \include shell32.inc" ^* z) W0 A# @ E' M4 e9 E- R includelib shell32.lib4 y2 x6 x: \+ ?0 t# w; E include kernel32.inc% b" Q. E" K3 ~$ i& A includelib kernel32.lib p5 y: w9 C# q7 ? ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>, C0 _3 |! M; S8 G t; O( _ ; Equ 等值定义 2 @; Z, e; z* {8 Q7 S( l! O; P;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>% }- ~9 P8 c' _( K( ] ICO_MAIN equ 104 ;图标 }! b% |% z+ u0 s& B5 mDLG_MAIN equ 101 ;对话框 6 i: {& v% W1 `8 d, U2 Y5 [ c9 J+ ]" qEDIT_MAIN equ 1002 ;编辑框. k8 S- D9 L: g6 T ? ID_ABOUT equ 1000 ;关于按钮/ k0 i8 Z/ W8 g( C1 M# z2 J ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>2 m/ c1 M8 ]7 s ; 数据段 + l+ Z2 b! v! Z7 y;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>0 C* r/ D: @2 a) C" M0 ]7 S .data?! x: e, H1 t, S$ M4 E; s 9 @8 W7 B' h8 s$ ZhInstance dd ?3 C. m! O: V6 \# c* V- J hHook dd ?. [( M3 V4 G: e; U) t- c) Y/ F4 _ hWndMain dd ? 3 a h5 }8 F( k* E, w. }: K3 [IsStop dd ?- K9 m' B5 f& d7 z# L! | 0 O! s- a/ u7 q4 A/ y/ J/ q4 `/ \ .const 2 V2 B) [: z3 ZszStart db '启动',0! |# k# d6 R% U [9 o szStop db '停止',0 2 ]4 o1 k8 Y" R1 bszCaption db 'EnableButton',0! k8 d- a) z" e8 s3 q& D" H# {: C szInfo db '版权没有 03.8.20 游侠无极限制作',0 ! N, t( E: ?% BszErr db '安装钩子失败,原因不明',0 $ g1 P8 O3 @1 GszWnd db '%lxH',0 + W2 {9 k) x$ q3 ?9 w;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6 d4 \+ r( k7 `; J0 [$ o ; 代码段6 G. n) E9 u! S' }- c ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 {0 B. p/ B& N4 l- D: { .code 2 {! E$ b. f- s9 Q. };>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' }9 Y5 h; i/ T1 K;钩子回调函数9 k* ?$ i+ h) ?% w% b3 g ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> " T. d$ s0 f0 U: z_HookProc proc _dwCode,_wParam,_lParam - V) N, }0 Y N7 B( z# w local @szBuffer[100]:byte 8 W9 N4 e6 |/ x# a0 q9 L( _3 ?% M invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam ;钩子链传递: \; N4 y3 R" m2 C pushad! f9 s: C5 u, g, o .if _dwCode == HC_ACTION ;Windows要移除一条消息时$ a9 }* J, P3 @& U3 P mov ebx,_lParam0 n, H& y, I7 u$ Y* r2 S& k, f assume ebx:ptr EVENTMSG3 T8 {7 x) Z5 ^ H) Z .if [ebx].message == WM_LBUTTONDOWN % g' h( ~; Q/ d% S/ O& |5 X mov eax,[ebx].hwnd ;取得当前鼠标所在控件句柄/ k& j, o, _; Y5 A' C invoke wsprintf,addr @szBuffer,addr szWnd,eax # @; [/ n/ K& `& t& L% c/ x invoke SetDlgItemText,hWndMain,EDIT_MAIN,addr @szBuffer ;显示句柄/ R/ n' |3 a' I; u8 e4 X invoke IsWindowEnabled,[ebx].hwnd ;判断控件是否无效 1 A6 X6 G0 F7 @6 a+ X6 b. X8 D .if eax == FALSE % f o' w- G0 j9 [' y' |. j invoke EnableWindow,[ebx].hwnd,TRUE ;使控件可用 2 j8 D; W7 f" \! U .endif) c0 Z i0 d2 I: D6 Y& s ;.endif " G8 ~: l7 V! N4 G5 M/ l .endif2 V4 T5 P0 x4 J. ^# p9 h assume ebx:nothing ! [% {! s' x' l* j: q .endif ! B2 R9 H4 K1 z) G* b" T# o. d4 t $ Z8 U# g5 i% w6 X$ w0 l popad) R% `. Z0 {8 [& ]3 R xor eax,eax- y) S: [" U$ G4 ^1 ~7 o1 @% w ret 8 Z1 [9 H% h8 m/ w- J3 }_HookProc endp ! @- O/ w1 H4 \ D/ d! N4 a5 y N" q;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>5 V# l3 s; |0 L$ n" M- D 2 v+ x- A- o: K; z) r4 C_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam9 C$ U2 z: x$ r2 I; C0 Q2 Z/ } , H h! n. U! N3 T mov eax,wMsg " H0 [; x: g" r2 E+ b4 @; Z .if eax == WM_CLOSE * I; Z* S+ n3 U# T, U, ^ .if IsStop != TRUE + n4 ~- K! g. F; U invoke UnhookWindowsHookEx,hHook ;卸载钩子8 n# z3 K) p9 ]. | .endif ! e1 n" B8 n2 ]/ A) b invoke EndDialog,hWnd,NULL ! [. f4 g% q, t% n" l9 o .elseif eax == WM_INITDIALOG8 H: l2 k4 p0 F3 k( r: m. a invoke LoadIcon,hInstance,ICO_MAIN! f# {6 l6 o1 b0 O: P invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax3 }4 z; n7 T: a; w invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE ;窗口最顶层8 o9 c- c1 U# ]3 b' n0 I. [* C: Z mov IsStop,TRUE/ K, M4 E3 _0 w/ p, Y6 j4 r push hWnd4 n7 {; @& Y1 U) D- m pop hWndMain+ j4 ]% x- ]# n4 o* P# ^ .elseif eax == WM_COMMAND 3 F9 ~2 w) J8 V/ m1 L" p mov eax,wParam% c" R" ~6 C- P) f+ |- K, j .if ax == IDOK' [+ {4 d/ \$ ^1 ?5 H2 ] .if IsStop == TRUE5 m) b6 a7 y6 a invoke SetDlgItemText,hWnd,IDOK,offset szStop . `+ L! ?5 [; h1 a invoke SetWindowsHookEx,WH_JOURNALRECORD,addr _HookProc,hInstance,NULL ;挂钩,日志记录钩子0 y. e- u7 W7 i0 C5 b- E .if eax ( ]" ~& i+ y) N. B) g0 j- z mov hHook,eax. K, i% _- G& T6 S .else ;挂钩失败3 C7 C1 a4 y( I0 ~6 D invoke MessageBox,hWnd,offset szErr,offset szCaption,MB_OK or MB_ICONWARNING) v" g( s x& R7 P .endif 1 b* o: `6 ^: H; z5 c mov IsStop,FALSE3 V5 [2 D$ n# `6 }% Z .else" I9 f( s0 a6 [$ e9 } invoke SetDlgItemText,hWnd,IDOK,offset szStart 5 ^/ r# N5 d9 \3 E8 E2 J0 Z* R invoke UnhookWindowsHookEx,hHook - j- H e& X$ L7 e4 a+ H mov IsStop,TRUE* U6 p, n9 j! B" W3 Y3 R5 l .endif( ~" t6 c: e4 w O .elseif ax == IDCANCEL9 V, M* t3 o6 k' W2 F4 X* L invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL, H3 P& L5 n& D6 r8 J .elseif ax == ID_ABOUT+ w# n3 T1 q- t6 z invoke ShellAbout,hWnd,offset szCaption,offset szInfo,NULL ;关于对话框& g+ a# L' y- I2 j .endif , b3 K4 d0 `; {) A* y .else : k3 V$ k2 ~* H9 z5 G9 V1 g mov eax,FALSE5 Z+ h0 f- J) P8 Y+ }& I$ ?2 U ret/ T6 N$ `, E+ E, p: `- d .endif; E0 q r- ], p, j* i mov eax,TRUE / q& p, X3 @( {$ ^+ l ret. S, [0 u* y# P# x$ u8 X! p! E3 R % j! B* s, N! E. k( W_ProcDlgMain endp ! |9 J& {) B+ r2 _( N0 a 2 \; L4 o* e5 E; F, O$ B;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>- E U) S* m$ ^: j! l start:; T$ w) O# Z5 P6 @1 W5 O0 R+ t" I invoke GetModuleHandle,NULL . g( e% [1 Z p k3 O5 } mov hInstance,eax: G" ?# ^5 T, K invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL 5 l9 F" f4 C U( r8 Y7 W/ J invoke ExitProcess,NULL 8 ^. q# o. `# s" u3 e3 _3 a5 B; U;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>7 I+ {0 ]* M/ `1 j2 v6 X end start 2 [/ o7 p+ ^6 D" H 0 L9 ~) V% s8 Q" t! Y% J $ U. ^0 L" z8 [" r' X# v$ J3 A界面看下图片 ! `" N& S \/ M+ c: q$ o, j# ?3 j) R1 w) @) d( P/ Z 9 p0 W- Q S: Q1 H! y: n + q9 O: B6 B) j+ q 1 |% w( @ ?) J( \0 a: x+ [4 Q- ?4 u: v. O6 w$ A* E$ t) q 1 Y2 V% @6 X: r* d8 |2 q4 Z* Y9 u7 I$ O- R0 q/ S' R
[此贴子已经被作者于2003-10-31 23:37:05编辑过]
% Q; l/ i* j. g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
bigfoot 该用户已被删除
2
发表于 2003-11-1 11:10:00 | 只看该作者
搞了个WH_JOURNALRECORD hook,大概是把变灰的控件Enable,有点意思: M* R( U. M& A# `# R4 A1 a
不过这类界面程序实在不是汇编的强项,用了大量的invoke  ,整个程序结构看上去和c别无二致
( V/ N3 n5 M: H* X汇编的强项不在这里,楼主如果想显耀汇编的强大,这个例子不怎么,8 Y% m% F/ ^7 }6 H2 I$ p) e6 z' c
再来一个强一点的原创瞧瞧 ^_^% Y  x* H$ u) d  u8 B& u& J5 d& ?
+ X6 b4 i" a. Z: S' C; y
1 d! o* l& [8 q! Z* L

# E3 q2 K( n1 f; U
[此贴子已经被作者于2003-11-1 11:16:10编辑过]

/ V1 L- U4 O- [6 m& ]% ?- C( H% j

该用户从未签到

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

本版积分规则

关闭

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

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