下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2003-10-31 23:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>, L2 K4 @/ s- E9 w+ J7 b2 j ; EnableButton ALL For bbs.xsclub.com 9 B. {: p* @# g. N; by 游侠无极限( W0 u6 P& E, H3 _4 n ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>8 x2 |5 Q. \( J! G$ E/ }5 R ; EndableButton.asm1 F0 Q5 m% s; Y; U) J! p# J ; 基于对话框资源) ~% f; [0 n. @, N$ ] ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+ E2 h4 E7 h# a' C1 |0 E$ V .386 6 n( n* ~9 O! H4 l .model flat, stdcall8 q/ M& D8 c6 f, |0 ] option casemap :none6 O/ E. [( @# M+ k* e" W& c+ V/ [ ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>: k1 s$ G/ m( z+ b0 l7 [ ; Include 文件定义4 l/ U6 m$ |" h ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>: k! b, z5 [# {* M7 y2 B! c: T include windows.inc. _7 W5 d& {- w7 O' L$ [ include user32.inc3 B V% r2 J0 z3 t includelib user32.lib 0 B. @3 B- x [! winclude shell32.inc+ }5 ~5 D; j: M: c# t" B$ V includelib shell32.lib" v; Y& i$ G* v6 y1 s include kernel32.inc, {8 s+ ]: J1 T( F2 y includelib kernel32.lib * J, t, l; z" h; M3 k4 Y. m* Q& u;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>. i' s7 @# g t7 i ~ ; Equ 等值定义$ c2 M0 ^6 F1 s9 t! g ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" P) A, }& A/ I) m% T ICO_MAIN equ 104 ;图标 $ ]$ k$ ]: |: ^7 t2 gDLG_MAIN equ 101 ;对话框) s* h5 J& \& x4 w3 j! F' u EDIT_MAIN equ 1002 ;编辑框5 }# P- }1 \- {# q9 |2 F; b9 }2 { ID_ABOUT equ 1000 ;关于按钮 8 n1 ]/ g1 P4 R5 e `;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>># a3 h9 _; q6 f8 U) X ; 数据段, \. a! C( ^1 I! E ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>9 n- n J, O( S1 s$ r4 z) m .data?( V1 @6 a+ W# {0 n' k $ b$ \! B2 t8 I' ?4 _# m1 c# L hInstance dd ?1 m0 c8 g& c- Z$ S `! C hHook dd ?1 n0 H* r2 H8 m- m% M hWndMain dd ? 7 f: o% b3 x3 }* k" `IsStop dd ? 2 E8 C! o+ ?7 v! A# [1 r0 m5 M( ~- c3 O. s3 J# c/ H* u .const % }0 L6 P0 V) IszStart db '启动',0. }' S) b* i, R2 |7 ^ szStop db '停止',0 : G% ~# @' `3 `+ J) c; pszCaption db 'EnableButton',07 O ]. i( z/ a0 x: G4 @ szInfo db '版权没有 03.8.20 游侠无极限制作',0) g# z9 j+ N# L+ I- G; B szErr db '安装钩子失败,原因不明',03 [/ E$ h: C9 D2 f7 o szWnd db '%lxH',0 ' ]" T) o4 B9 o0 b6 n1 m;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>4 s: |2 K3 L7 M, O ; 代码段 & Z) g) @8 W- P' f* ];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>- h% J7 H$ I6 S .code ( k( R; Q" k0 J: B* n;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 4 F) U9 @* {) T;钩子回调函数3 a; n! D( ~+ c- q( Y ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>4 Y! X2 P5 q1 s5 B) B; K$ t _HookProc proc _dwCode,_wParam,_lParam9 D, o( \3 U5 o y, ^ local @szBuffer[100]:byte: _, T8 G% D/ {% w) m( q: y* s invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam ;钩子链传递 ' Z6 [+ z/ g7 }) Y9 I) c pushad' }7 r0 [% F; R' p0 D0 r0 i7 d .if _dwCode == HC_ACTION ;Windows要移除一条消息时8 |+ D6 Q& [, T( | mov ebx,_lParam $ H7 W& a! Y' S0 ? assume ebx:ptr EVENTMSG & V& g( X# F- [ .if [ebx].message == WM_LBUTTONDOWN H9 D% }+ V- s& R6 { mov eax,[ebx].hwnd ;取得当前鼠标所在控件句柄 ' C# E% Z$ l! u invoke wsprintf,addr @szBuffer,addr szWnd,eax2 i- ?& c! X0 `" x& a invoke SetDlgItemText,hWndMain,EDIT_MAIN,addr @szBuffer ;显示句柄 ' @- Z- }- T4 |' @+ | invoke IsWindowEnabled,[ebx].hwnd ;判断控件是否无效 , P, W2 e2 r4 a1 {- c9 l .if eax == FALSE" u3 o: W; O2 E8 J' @ invoke EnableWindow,[ebx].hwnd,TRUE ;使控件可用- A6 ?+ M+ u# h( _9 R" @ .endif% K9 l- T6 q+ C5 {4 H" D ;.endif 3 u' Z5 ~, c8 u1 F- W O .endif0 k" a7 w z2 L7 x0 `" B' j assume ebx:nothing' G% h0 u* ]& ? .endif ( W: e1 F7 }) G1 f1 G( M4 v) N8 }$ v% p0 Z7 w1 O% k( I popad . X, V* i9 ~/ j* S& w xor eax,eax0 w A3 b! Z, W. v0 e W$ O! T9 t ret # L) Y0 ? d. j0 X# @- V5 m* n! `_HookProc endp / Z7 N1 h6 u$ S, @;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>5 S4 g* X( o. Q' v. `& z , G9 `2 H2 Y( ?5 ^2 S$ j_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam ' X8 V( b# {3 p5 z2 p3 V# D! L1 b9 q mov eax,wMsg 3 P) W" s, c& m7 t .if eax == WM_CLOSE 1 t' l9 ~, _' g! t# z' m* q* S' Y- U .if IsStop != TRUE # T3 @2 n7 \* D5 n7 w invoke UnhookWindowsHookEx,hHook ;卸载钩子0 I% J @# M& |& D/ { .endif ! M: ^' G1 H: D* v invoke EndDialog,hWnd,NULL' b1 S* A- ]" g9 L/ A5 j .elseif eax == WM_INITDIALOG ) Z& t0 k( m- y1 y/ s invoke LoadIcon,hInstance,ICO_MAIN , M9 n4 U" Y& N5 ]1 P: c/ P, M invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax7 _. i* x$ d8 c' X0 J invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE ;窗口最顶层 ( ]7 D+ p# _% t7 ]- h+ { mov IsStop,TRUE 8 V1 P( {8 G' x0 g6 q" T push hWnd7 N8 ^! u5 K- k x* P3 t pop hWndMain ) G2 a. z) M" F5 L) [- ~ .elseif eax == WM_COMMAND 1 |- \6 u4 }% k# a: [/ u) B8 w mov eax,wParam7 a6 l* J5 y. t4 W- j/ `! C- v E9 V .if ax == IDOK0 A' |; J! ~$ W* ]' r5 k& s$ l .if IsStop == TRUE5 V6 x9 T* i: V# S) V; c+ o invoke SetDlgItemText,hWnd,IDOK,offset szStop- |# w: l$ I# a9 W& J t invoke SetWindowsHookEx,WH_JOURNALRECORD,addr _HookProc,hInstance,NULL ;挂钩,日志记录钩子 . Y4 c7 E4 s) _4 ?! }5 F .if eax1 Q/ E0 r6 n( Q, B$ _. b B mov hHook,eax+ {/ Z; s6 w, @- d- j .else ;挂钩失败# _7 z h3 p% f9 @ invoke MessageBox,hWnd,offset szErr,offset szCaption,MB_OK or MB_ICONWARNING 9 G* ]; f r9 R7 o$ x5 _6 q, N2 ^ .endif 0 g- S( L- W" `0 Q mov IsStop,FALSE " M+ c* m7 o; O0 E+ m1 U" i! v5 a .else! G) ]% [# T: Y. {" k) d invoke SetDlgItemText,hWnd,IDOK,offset szStart 4 A/ J& R1 A- ~% `- A3 J2 J1 y invoke UnhookWindowsHookEx,hHook ; P) f* K7 R7 n mov IsStop,TRUE" ~: F; [, v+ z7 H4 d* n .endif* ~- I# ]% Y: O+ T( L .elseif ax == IDCANCEL 2 ~% |$ s5 b4 d6 ?, p% A! @ invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL6 j- E" J5 c2 e7 | .elseif ax == ID_ABOUT 1 `# M9 p% g& h" r9 [! ^( |, w invoke ShellAbout,hWnd,offset szCaption,offset szInfo,NULL ;关于对话框$ J7 E, F9 H: M+ y .endif 9 G) e; F7 q3 P6 b! N. @& u .else/ D: |6 U+ @: m4 o; Z mov eax,FALSE* y. b! K3 U# [, O; K7 |1 b ret 4 U- ]$ C! N2 b .endif 8 [: M& @( a& B" C- s G% K mov eax,TRUE) \+ S. T' G+ j3 o7 G/ E& {* ~ ret4 f/ g2 u5 n! x' u P$ m9 F . l5 ?7 d `% N% U4 s/ ^, ?- a_ProcDlgMain endp : n3 a: z" [- Z& h! k$ _( w : l% T: g* p4 ]+ |;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 5 d H W; }- Q9 a$ p/ }: Z8 i- O4 jstart: 2 q& e' d ~1 Q3 j invoke GetModuleHandle,NULL. k# u7 @( U% b) V mov hInstance,eax) R6 H+ V" Q2 q invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL# i1 ?! U* |9 r, [6 ] invoke ExitProcess,NULL 8 p. t0 R1 F4 D' S/ U;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3 `8 _$ k1 Z% W+ v w' Q end start ) M& m! a5 D. N6 Z' p% Y' H/ f7 h5 F9 k! p5 j 3 H- W9 t0 b4 W" o. Y 界面看下图片! h4 Z Q% H% R3 q& P+ l% Q 1 D1 t% x- E" }* W( m: X+ M $ I8 X7 j, Q, U M& \ ]+ C4 I W9 j% |8 M. }$ s( h 1 ?3 o" l% u6 D* u- V 2 g7 l/ q( N; t. u# R2 n% D* I* x# c8 F6 o# b' e! T, b 7 q' b+ I* B. U9 F
[此贴子已经被作者于2003-10-31 23:37:05编辑过]
' m7 t8 Z0 E0 M4 N! l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
bigfoot 该用户已被删除
2
发表于 2003-11-1 11:10:00 | 只看该作者
搞了个WH_JOURNALRECORD hook,大概是把变灰的控件Enable,有点意思
; A5 {" s! V( x$ Z+ H不过这类界面程序实在不是汇编的强项,用了大量的invoke  ,整个程序结构看上去和c别无二致
% Q% H- e$ k9 L/ Z- l' z汇编的强项不在这里,楼主如果想显耀汇编的强大,这个例子不怎么,
4 O# ~& t0 [+ l* _8 y再来一个强一点的原创瞧瞧 ^_^
3 t9 |# p1 B- N( N8 Q$ i3 m: u+ {9 ?/ i+ b4 b9 ~3 J

7 B& K* d" i: i- Y( ~5 i+ g1 y8 m. i4 m3 [+ I
[此贴子已经被作者于2003-11-1 11:16:10编辑过]
' D, O4 ^  P6 D! t5 C" P

该用户从未签到

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

本版积分规则

关闭

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

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