下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2003-10-31 23:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! v3 p+ B4 h, F, l- V7 Q; EnableButton ALL For bbs.xsclub.com( @$ Z& a7 Q. P3 {3 a4 |4 ] ; by 游侠无极限, a0 f! O6 |: y7 E# f2 B9 o* o ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>7 t0 ^- C5 |5 @ ; EndableButton.asm ! ~6 M. V0 {6 V' j; 基于对话框资源 & e; H5 M5 O, U& w;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" j% H5 g* x) h- m7 U4 R .386 2 e4 q6 ?5 W! N( u) c2 c3 C .model flat, stdcall( f# g8 H# M2 O2 A option casemap :none9 x4 ?0 v* F% T: t4 ~6 F% s ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>2 k; H% D/ k, u8 p ; Include 文件定义# \; T3 D% g5 a- L ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3 B! y; M- X7 b$ z include windows.inc4 z7 b. i* k: V8 m. A# S include user32.inc# q2 ~8 o# L( h. w includelib user32.lib 4 E- B; V0 q, ^3 X( dinclude shell32.inc, a3 `: Y. O5 ~! m5 s; S& L9 v* q# b includelib shell32.lib" M8 m7 Q' T6 r$ j include kernel32.inc% I1 i& i) P+ V3 j/ } includelib kernel32.lib ]* b9 ]! c0 i5 B8 C;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> , S; J( y i; t9 s! n; w4 m& h; Equ 等值定义: o! u4 z! ^" `2 M9 T# Q8 J ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! h# E* g/ J6 g1 I6 NICO_MAIN equ 104 ;图标! [8 Y& ^. ?/ {2 q' w DLG_MAIN equ 101 ;对话框 . P# F. Y, K% L4 X" oEDIT_MAIN equ 1002 ;编辑框/ T2 P- d. \9 ?2 ^6 \* E6 G ID_ABOUT equ 1000 ;关于按钮 9 @( l/ Y {" F7 `. k, v$ T6 x;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; v- }# h- q1 x8 }; 数据段 $ Z8 X/ M; a2 w. h. M- v;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 4 I3 U) O ] |1 Q! f# C .data? + [* n' F; N8 \; C5 ~% L% E# {8 H7 Q+ D8 p hInstance dd ? 9 h# C3 f" _7 T; VhHook dd ? 6 Y$ w) n$ C- L8 J' }hWndMain dd ? 7 G& Z" _0 D$ x. i& N2 o+ J/ z: nIsStop dd ? ) o# }# H' S# K* T# l, ^6 F) t0 g. P / |, r+ n: ?8 [! K' p0 `4 A .const / P- ]2 h% x1 k4 v& OszStart db '启动',0 2 q7 m2 F* z% x8 WszStop db '停止',0 ( o4 T+ U9 ?3 G" hszCaption db 'EnableButton',0 6 f& k# Y) U4 O- f6 dszInfo db '版权没有 03.8.20 游侠无极限制作',06 c: g R' q. o' [ r, K szErr db '安装钩子失败,原因不明',0 " q8 H8 N1 a; y+ y1 _" mszWnd db '%lxH',0 5 B3 m' R; z' v0 J;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>># |3 j0 C0 \- O- b. W5 V" U! C: l2 r8 T( r ; 代码段0 Y7 p( O. T5 p6 E, J9 E ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3 ^$ |6 F% _! E" r0 W! Y3 H .code% F/ n6 y K0 G% Y7 K5 x" V- R# b ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + n! a4 p& @& y* @8 M9 @;钩子回调函数7 R( r$ A: Z2 a$ V2 g/ Y8 B5 M& Q ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; y8 M* y, [! n/ R( ?& D_HookProc proc _dwCode,_wParam,_lParam3 u' B( t9 x+ Z5 n' F1 F local @szBuffer[100]:byte ! H5 u4 I8 h- J! `0 G: q, E: s invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam ;钩子链传递! S$ Y. g N+ X6 e- ]1 E pushad0 v- ?. D* l# Y( \ .if _dwCode == HC_ACTION ;Windows要移除一条消息时% B; B, E6 B7 [% Q mov ebx,_lParam : m9 D: E3 S- L assume ebx:ptr EVENTMSG1 e" I; \5 b5 E .if [ebx].message == WM_LBUTTONDOWN/ U: d, a- k! O2 \" P( z' [ mov eax,[ebx].hwnd ;取得当前鼠标所在控件句柄 2 s# M2 z$ L, E# L invoke wsprintf,addr @szBuffer,addr szWnd,eax6 Y1 P" ]' P" [+ i invoke SetDlgItemText,hWndMain,EDIT_MAIN,addr @szBuffer ;显示句柄- G. H( m# l7 x" t8 u7 E2 w invoke IsWindowEnabled,[ebx].hwnd ;判断控件是否无效. |9 f2 r" }8 x" C1 E. W, r j7 S .if eax == FALSE. a9 j6 \, |& s invoke EnableWindow,[ebx].hwnd,TRUE ;使控件可用 . y) `: C5 M$ v" M! h3 j1 Q .endif. v& @+ u7 g( e1 v& I3 \1 M% v h ;.endif ; h7 k4 D- D) \5 i* z7 b .endif " E6 `4 {, D; E( m9 n; [) h- W" ~ assume ebx:nothing, f9 D+ Z, g- b# D4 { .endif 2 P/ D5 r2 n7 |7 L' u& c7 T % E, b! K, W, I9 c% Q& G/ E popad$ @. }: g( U. Z xor eax,eax7 S$ ?$ N5 [ q4 N8 C5 d# \- @ ret x, z* ~! h; A2 y_HookProc endp 4 z# N3 y( u6 D$ z8 J# x;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> $ H. s r5 x; q* z + H# }, q r5 ^$ \' V) I! j_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam m4 b( U1 Z. T; e* k: P/ S 9 Q4 o6 m& E& O) C mov eax,wMsg ) v1 F" x* [. J( t .if eax == WM_CLOSE , n R) X* ~5 L7 m) ^ .if IsStop != TRUE3 q& s2 i- A# f: ?. | invoke UnhookWindowsHookEx,hHook ;卸载钩子 9 b& q4 C. n9 w$ _/ J .endif: j0 q2 Q/ Q- R; z$ Z invoke EndDialog,hWnd,NULL b) ~* {5 j( Q# [; T .elseif eax == WM_INITDIALOG2 t8 Z) X) q0 u U- K invoke LoadIcon,hInstance,ICO_MAIN2 c! r$ d$ N7 ^# h invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax& T* X6 L. B/ h& ^! R invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE ;窗口最顶层. q8 z" @2 |4 X mov IsStop,TRUE 0 E! Z# L8 W4 B" C+ C6 I push hWnd+ F F3 Y1 r" g# _) E% h pop hWndMain 3 f$ e1 O- E, s& X4 Q/ U; c% h- p .elseif eax == WM_COMMAND. _2 s& H3 F- P5 {% t mov eax,wParam( I. c1 e9 M2 N' | .if ax == IDOK 8 `/ `6 C- s. v .if IsStop == TRUE 9 t1 H) P% M& \ {! y2 p invoke SetDlgItemText,hWnd,IDOK,offset szStop 6 M! ^! O! L- H8 o invoke SetWindowsHookEx,WH_JOURNALRECORD,addr _HookProc,hInstance,NULL ;挂钩,日志记录钩子 P- p: e' y: U4 @5 Y0 K .if eax ) h4 p; O, F/ v7 e mov hHook,eax ' o( }) A9 I) X, l6 J .else ;挂钩失败- {3 ~4 V' s, E4 y P9 m invoke MessageBox,hWnd,offset szErr,offset szCaption,MB_OK or MB_ICONWARNING, T' d- ?3 ]7 R. H) S% _ .endif& B5 ^+ ]# Q, A4 z; m! Q. a- ] mov IsStop,FALSE " z. z1 i: L o/ F' C .else9 E! |1 I( p- S/ B! d. D6 {# @; X invoke SetDlgItemText,hWnd,IDOK,offset szStart6 z, k$ x$ A: m) C invoke UnhookWindowsHookEx,hHook 6 T! Y" u: P: g mov IsStop,TRUE c3 \! `% D! l- N4 d .endif4 ] p, T5 V+ [; l# y; x) ] .elseif ax == IDCANCEL. z0 A6 _, @: b3 b' \ invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL ' h/ G7 N/ |( `* T .elseif ax == ID_ABOUT0 V( e, F2 S& S; N$ ~ invoke ShellAbout,hWnd,offset szCaption,offset szInfo,NULL ;关于对话框 ' c5 v- A) M! t .endif 8 U5 j$ }1 U$ w .else 5 Q/ P" r9 L% p8 M' f% q% q mov eax,FALSE/ B- Y( @6 W# ~& N. F, Z ret$ [; ]$ l5 d* M9 Q .endif . O' t S5 I3 p! U mov eax,TRUE/ _6 M: {7 [( t1 J3 G1 d- G ret ! b% x2 ~- b% F1 G$ `- U- P; ^, Q7 K% i8 d Y! R3 M6 y _ProcDlgMain endp 9 c6 r" s) ^- E& h; S5 ] # v/ c- f" D# {1 v8 a;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 4 V- x/ u: f) `5 ystart: 0 P+ V, r: g8 E8 C6 L, G2 ~2 r# }- \ invoke GetModuleHandle,NULL & S) e# c+ `+ ]( [5 ~' M8 O mov hInstance,eax , L) z* n! N& G1 Z8 q! q invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL + c( Z3 I- w4 ^5 o2 Z invoke ExitProcess,NULL8 c+ V! @2 y" `( V, B9 Q# t ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>, a) i; G2 ]2 l end start, G% H7 G5 t# s2 W , T6 N! R; c0 S* ~ & i+ ]2 L5 h1 t9 Q 界面看下图片3 ?3 Z, _; \8 G! ^8 M5 e6 _3 [ ( V1 s' f' C1 L$ U/ c # Z, C* g0 J7 L! n; M$ F 6 A& P/ Y7 p; o$ w0 { 0 E, O2 _2 ]8 L V! h% K7 @! H7 w) P* D K- |+ w! Q9 ~ t _, S* M7 l2 y# @ / C4 i! y# m/ `. ~' f! s% b0 X5 E
[此贴子已经被作者于2003-10-31 23:37:05编辑过]
! d8 g# S! o' T2 I5 v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
bigfoot 该用户已被删除
2
发表于 2003-11-1 11:10:00 | 只看该作者
搞了个WH_JOURNALRECORD hook,大概是把变灰的控件Enable,有点意思
2 Z0 q" K' t+ z" L+ J( C不过这类界面程序实在不是汇编的强项,用了大量的invoke  ,整个程序结构看上去和c别无二致- S7 ?; r" }4 y# }' g
汇编的强项不在这里,楼主如果想显耀汇编的强大,这个例子不怎么,9 x2 a" _( J; D1 P$ [0 p) {7 b
再来一个强一点的原创瞧瞧 ^_^
9 l* u- E$ z, U$ [
/ H( x% A+ X) I" Y$ p6 w- @$ q' E; R  b
& E' s# ~6 `9 `( j) X0 l/ Y
[此贴子已经被作者于2003-11-1 11:16:10编辑过]
& K6 q3 _5 e" I) @) f5 v$ U

该用户从未签到

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

本版积分规则

关闭

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

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