下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2003-10-31 23:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 9 |$ v( E( l9 Y+ s; EnableButton ALL For bbs.xsclub.com0 y% g6 o* k$ D0 N( I ; by 游侠无极限1 _7 ^8 j4 b' @' o/ {+ ^ ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>8 r; @" A7 T% S8 J- M# o ; EndableButton.asm. i$ N2 w4 y% \# K$ x: }! L+ K ; 基于对话框资源 9 e" c- A0 G, e6 n;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>& a6 i5 D! J; _ @2 @ .386 , Z/ v) D' }4 w, |+ X; C .model flat, stdcall $ `$ a2 [1 Q0 l+ j% n# w option casemap :none E0 c1 C" y9 i: ^! N;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> / t# v+ ^! t2 |& F1 k; Include 文件定义 8 U2 H* C: V+ X+ X- q8 a* {;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/ V% P6 l0 Y& v$ D3 Z include windows.inc0 S. S$ n: H. [9 {9 p! |1 c% a include user32.inc & Z7 Y. w: m% V `; H7 T, gincludelib user32.lib. Q' b0 q; E, Q include shell32.inc 2 z+ c8 x$ C2 i8 tincludelib shell32.lib $ M' n! k0 _( Linclude kernel32.inc + T- B( i$ Q6 m, e, Nincludelib kernel32.lib a7 \* P [) g5 ]' w ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>7 _7 {+ o" X' e/ v: V, r ; Equ 等值定义8 |7 Z6 i* o/ K6 L) B7 } ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! k8 ]' e: F6 E) c% i" D9 HICO_MAIN equ 104 ;图标 % F8 @% D+ D2 D2 XDLG_MAIN equ 101 ;对话框/ D% I5 z; \! g4 f! N9 A EDIT_MAIN equ 1002 ;编辑框, C2 ]2 t) V2 G: |0 x* P2 m ID_ABOUT equ 1000 ;关于按钮# q7 p2 z7 {1 x0 J) d6 d ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>2 o7 p- a7 n- _! j1 Q ; 数据段$ [( n2 e' r4 c! L) B( @ ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> X- L) H, N3 |$ W1 i. U! x) `+ \ .data?7 O2 t4 g9 f, B 0 g; r: z3 Y# A. P hInstance dd ?% N2 d/ p% a# W hHook dd ?" @7 X, |# ?. t" }6 @ hWndMain dd ?5 c$ c5 X) I: H" A+ t IsStop dd ? 9 o+ ~: g* {! h/ w( ~. S( r# P0 \3 S" @3 d; G% ]4 j7 [ \3 W .const/ c) J; T" }2 V- U6 B% u/ w) a2 }/ l szStart db '启动',0 ; c D! O$ o- _" u. o0 SszStop db '停止',0 9 d, H: t# Q p% o2 }szCaption db 'EnableButton',08 L# X! O0 S# y2 M. Z( J' b6 | szInfo db '版权没有 03.8.20 游侠无极限制作',0 / m) L3 h9 \5 `szErr db '安装钩子失败,原因不明',00 `. O8 k6 R! Q' W7 V$ K0 `2 B szWnd db '%lxH',0+ ]( w. \3 W3 j/ l$ ? ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" W$ v1 m: E' }1 K, i2 D* p( J: ? ; 代码段/ p- W5 [8 p N" [3 ] ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$ b& T" s/ h) i1 P3 x: p" U7 z6 ~; w4 M .code ; w+ g9 C u0 E" z) L9 g/ r, p;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' ?" z l7 ^' J; Z7 h ;钩子回调函数 + |/ v' H, e2 o! r2 [1 q2 G;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> , r# ^! u8 a+ v% j5 Y+ u2 ~% ^_HookProc proc _dwCode,_wParam,_lParam - D5 d# r5 I% r+ f" ? local @szBuffer[100]:byte ' Q( M$ M1 b5 J+ h7 Z invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam ;钩子链传递! T! J* u$ R8 Z C7 E- J pushad3 L, M( H0 X6 L2 M X( ~/ s+ J- F .if _dwCode == HC_ACTION ;Windows要移除一条消息时% i1 f. W: b8 U; z' P$ I mov ebx,_lParam& `6 }1 V4 j; t. s$ L assume ebx:ptr EVENTMSG " x) N' \8 O+ [' }$ \) i+ V5 { .if [ebx].message == WM_LBUTTONDOWN $ r+ [* M3 f* e3 o mov eax,[ebx].hwnd ;取得当前鼠标所在控件句柄 2 r! [7 R: k2 ? invoke wsprintf,addr @szBuffer,addr szWnd,eax+ g3 a$ [0 W- v+ b5 Y invoke SetDlgItemText,hWndMain,EDIT_MAIN,addr @szBuffer ;显示句柄 ) B' V; f- P6 u1 x G2 r5 [9 y invoke IsWindowEnabled,[ebx].hwnd ;判断控件是否无效- ~! i4 ^0 A N% G" {2 G .if eax == FALSE - u, N1 g" ~9 u" M invoke EnableWindow,[ebx].hwnd,TRUE ;使控件可用 9 f5 y4 A1 r) N. r* [% d .endif8 L# f9 T6 }3 t% Q K, ?; Q; c* e ;.endif- T' q& J4 o% `! I .endif 1 L5 @0 a7 C8 E2 b) `' C; T& C% M3 s assume ebx:nothing 0 X1 F3 o% N& `- j$ T1 H7 e .endif% g( W: g0 Q2 _2 K1 q / q4 C) `0 H/ I1 o9 Z4 n popad3 q% Y8 |+ j4 B xor eax,eax! y% d2 o4 [! K) a! m9 o. z ret " ^3 v5 p: }0 B0 v4 B Z/ I_HookProc endp 9 y1 {- q# n/ R$ _;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>4 x+ Z5 d6 l& d `1 a % U/ X$ R# P5 N* l" R$ c _ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam \& }4 P# Z! m3 J9 H6 X - N+ I7 d0 u& Q# H mov eax,wMsg + `7 O8 K4 M1 n& G .if eax == WM_CLOSE : y0 [8 b/ `; u8 T* s6 l .if IsStop != TRUE ) b6 Y( ]; W/ z) [& d0 f invoke UnhookWindowsHookEx,hHook ;卸载钩子 & Y& Q9 y! D# F* i( H N .endif % A m) m: J b+ Z0 S- E( Z2 v8 Z invoke EndDialog,hWnd,NULL1 Q: X* {+ {, P* G& ^ .elseif eax == WM_INITDIALOG - l: S) ^8 g; m2 A; l1 s invoke LoadIcon,hInstance,ICO_MAIN% Q* A: K+ [$ l; f' ~# ~ invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax ; P+ l# f" g* D7 y, e! d: L invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE ;窗口最顶层: E4 u+ M0 a: I1 C) X mov IsStop,TRUE 1 ?# h/ t: f/ D3 {/ u" | push hWnd6 Q) i4 k, k( U7 c: Z pop hWndMain% j# L& o0 F: h; Y .elseif eax == WM_COMMAND' x" O! H2 X" ?4 y+ H0 L+ D* w. x/ [5 p mov eax,wParam0 g V C' T2 q/ C# I2 T .if ax == IDOK" E/ q4 L; b- {' [& t .if IsStop == TRUE7 }, I* S' F4 ] invoke SetDlgItemText,hWnd,IDOK,offset szStop/ E/ c0 D7 A0 M* G1 i( J invoke SetWindowsHookEx,WH_JOURNALRECORD,addr _HookProc,hInstance,NULL ;挂钩,日志记录钩子 # j9 c; z: x' p/ S) V1 I- ?) e .if eax* q' }( G3 m1 H& b" I3 c4 u mov hHook,eax # n3 z+ p; ~4 Z/ h .else ;挂钩失败 , [+ q; z' B0 Y- H) z! z" n invoke MessageBox,hWnd,offset szErr,offset szCaption,MB_OK or MB_ICONWARNING w4 i0 ~, A8 K1 w$ _0 Q .endif7 W* p% f! B D/ o& V mov IsStop,FALSE& E: d a- ?4 c# x# N( D .else/ y4 b5 u* y1 A$ T& x$ {) F/ H invoke SetDlgItemText,hWnd,IDOK,offset szStart ! ]- y9 i* `& ^6 Q( m v( X invoke UnhookWindowsHookEx,hHook4 F3 |. w6 Z( W; L1 O$ Z2 l mov IsStop,TRUE ) u, p1 F+ }: `% v2 j" ? .endif7 n: w- y4 j7 {) u9 G .elseif ax == IDCANCEL & T2 h8 s# S+ V9 t$ v* W. H1 p invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL , ?' E& Q5 r3 n5 |- Y; n: C O .elseif ax == ID_ABOUT: L+ }" V" O, m- M* f: X( D. ` invoke ShellAbout,hWnd,offset szCaption,offset szInfo,NULL ;关于对话框; x0 r% C4 O/ ?+ v% M B .endif / @' E7 r8 Y& Y3 c+ e, h8 m+ X' N .else ( f& B! o" }6 ?. m; _$ x8 U% \% [ mov eax,FALSE6 H% v- J- B$ l7 v7 ] ret " o" z" T$ T: R! y! V .endif" U6 h7 V9 S0 O* P% a i n mov eax,TRUE + C) l* i/ O2 w! j9 | ret 8 J. y$ O% w! q+ Y9 ?( i% f6 r$ |) a* v9 n _ProcDlgMain endp5 u+ `% B% `1 X# J f8 T( S9 E7 S/ b " t2 S X6 ]# V# F;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> , W% b5 _1 _$ m! nstart: ' R2 g/ J4 {8 y; a2 X! ] invoke GetModuleHandle,NULL - z/ P, H) A3 f. V mov hInstance,eax 4 M) o% r9 {* _* u. z: u0 c2 i# x8 {5 F invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL 4 _3 |* b# G0 n* E- L invoke ExitProcess,NULL & F- `+ \1 q7 s0 O;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> @/ { N; r0 e/ T end start1 K% G) J9 J0 [3 J- {0 t$ i% w 4 d6 \4 @/ Y3 b0 W+ o' [1 \ ; m1 n Q: c2 W& ?; A8 B- Q界面看下图片 2 R3 F0 ]; `- Z' T 5 A+ S6 X. I' V n 9 u5 M8 @( N# o7 b! L1 H8 d 0 `0 K7 b+ f- k3 v. z% x/ k 1 u& c" t5 o2 `2 n/ u9 j& {' G. Z& }% d1 D5 T4 t3 `* R9 e" } 7 R8 b- r) t6 m; p: J9 G, _' D5 {, {) r' v( W3 G
[此贴子已经被作者于2003-10-31 23:37:05编辑过]
: t6 Y7 E6 I" T1 F: g/ N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
bigfoot 该用户已被删除
2
发表于 2003-11-1 11:10:00 | 只看该作者
搞了个WH_JOURNALRECORD hook,大概是把变灰的控件Enable,有点意思
# w1 V9 I+ u  S不过这类界面程序实在不是汇编的强项,用了大量的invoke  ,整个程序结构看上去和c别无二致$ P. F( M  O6 p( \2 Y% U* k" H+ D
汇编的强项不在这里,楼主如果想显耀汇编的强大,这个例子不怎么,
* W8 M/ l7 i  R! Z9 y% n再来一个强一点的原创瞧瞧 ^_^7 j1 _& x+ u# y: |& Y
$ X4 {* M* @1 R/ B! B! h
" m4 A9 p. U" Y
* T$ ]6 D8 @7 |8 Y
[此贴子已经被作者于2003-11-1 11:16:10编辑过]
) h+ m; f& |( W' ~. ~

该用户从未签到

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

本版积分规则

关闭

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

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