下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2003-10-31 23:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> / E6 o L+ H/ }& n+ O; EnableButton ALL For bbs.xsclub.com) \4 {2 t5 q% P+ L1 j ; by 游侠无极限' w1 B, t3 y# z6 c; t0 e0 c3 \% } ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>% R$ D3 _4 h2 w; | ; EndableButton.asm , ], Z$ u9 b) d( K; 基于对话框资源" L A8 t+ v7 e, _, H* `6 E" A ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + j5 }( Q) C s+ I' i .386# C) [# w" [, D; k( @ .model flat, stdcall 5 D1 @- V4 }! I# `0 W option casemap :none 0 R$ k6 |2 M( Q;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>># M+ m/ N7 x1 O9 [" h% U8 I ; Include 文件定义 2 q, f8 S4 L9 z3 D;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6 [1 X# P/ Y4 c include windows.inc5 }1 M; i) z& N- ? include user32.inc : K# N3 |. n5 G T8 {includelib user32.lib1 ~, L! Q* _3 c) C include shell32.inc' ]! z* V0 w4 D) D includelib shell32.lib ! T- d9 d/ _5 _: ginclude kernel32.inc 4 o; c# ^) R5 H# hincludelib kernel32.lib - n5 B8 W2 e4 q0 } x;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>9 `1 o7 i& z( `4 u5 J! Y ; Equ 等值定义3 |8 s8 i# o1 f( \ ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> : D; l$ @9 M3 |, }' ?ICO_MAIN equ 104 ;图标, w! I; ~. z3 ~$ I2 z, g" u DLG_MAIN equ 101 ;对话框/ v# z. d5 G4 s EDIT_MAIN equ 1002 ;编辑框; F9 L1 a {. I! X+ C ID_ABOUT equ 1000 ;关于按钮 # }" Q4 B {3 [;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' {9 m; M' b: e; `+ v+ }% [ ; 数据段 0 P- D/ A' M6 p) }& O+ C9 F;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>: q; o' o3 T: r7 {( V u( K4 T' b) E .data?- r% _4 W! w7 _8 V _ F! a 4 I9 y- T5 D: B hInstance dd ? , I& |4 ]. B! p1 b* t- ThHook dd ? 4 A( D* j! W0 u& e4 x+ whWndMain dd ? U0 p5 E1 S7 h/ nIsStop dd ?0 ^! S9 g% u7 F) R6 h! \7 r & S' Z; I/ M5 ?7 t .const) t: ^( ~/ ?7 E szStart db '启动',02 @3 b& R% H" q1 ]/ {9 v szStop db '停止',0( B' T: h( Q; C' e szCaption db 'EnableButton',0 9 }' K' w5 W# J& g0 {9 e9 z8 zszInfo db '版权没有 03.8.20 游侠无极限制作',0' G% N* L2 V/ n. L0 C+ w, Z' T2 J szErr db '安装钩子失败,原因不明',0 ! p7 W$ c! T, V: R u9 N pszWnd db '%lxH',0 $ A9 h3 ^, s. p( p1 |3 P* B;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ) K/ n6 ]' {2 s- a2 A; 代码段 3 y! E$ P! w0 f+ U;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>7 a. h( v4 I* D5 n .code 0 y. \1 G" \3 w( u, z0 @;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$ l3 W8 {: [3 _4 ` ;钩子回调函数 * r, L+ K* L/ H, `& t( m) e2 m;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>) |& D( t C; S6 z" U# \4 N _HookProc proc _dwCode,_wParam,_lParam 6 u l5 W8 t8 _3 d3 h6 t local @szBuffer[100]:byte % F3 l2 ~0 m1 p0 d! v invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam ;钩子链传递 & }4 x( I+ j' F+ N4 \, R! A; m+ S3 ^1 S pushad # U0 \5 g4 N+ C( _1 O! ~# v4 { .if _dwCode == HC_ACTION ;Windows要移除一条消息时 - ?3 m0 k9 B) a: z A5 I mov ebx,_lParam ' x9 J. Y1 Z, R- T r assume ebx:ptr EVENTMSG / G0 n. X* l$ \( u9 b f/ N4 ? .if [ebx].message == WM_LBUTTONDOWN( `! _$ g! g+ p mov eax,[ebx].hwnd ;取得当前鼠标所在控件句柄9 j8 a0 X: J5 B$ H invoke wsprintf,addr @szBuffer,addr szWnd,eax - z' p H* I* R+ S5 I4 k3 V invoke SetDlgItemText,hWndMain,EDIT_MAIN,addr @szBuffer ;显示句柄' U+ o8 I$ M) ~# K, d invoke IsWindowEnabled,[ebx].hwnd ;判断控件是否无效% M/ c B" z- I+ i. [ .if eax == FALSE & h2 c0 }' O6 \! t invoke EnableWindow,[ebx].hwnd,TRUE ;使控件可用* E' C$ M1 v H x .endif' I1 D+ [- e5 N% o. a ;.endif0 |9 ^( w3 V2 ^4 g5 t1 R .endif $ {) d$ f& \2 [( f8 t8 j assume ebx:nothing; |2 j% O7 J: {) \ .endif 8 i/ x. S2 m# H. x& u6 ?. W4 L" T4 P0 B, u Y% M popad8 ]3 f" _; E* ~# R' h! F xor eax,eax3 P, }% b# v" ]$ w; p" B ret' P( N# c( s/ J C/ X5 P8 Q1 { _HookProc endp 1 a* c9 u: u6 G Y;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>8 C" q8 ~- _/ K" Y/ \# @ + {" |( o& k8 a% a6 r_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam 9 G5 c: v2 P: f3 S; h9 @( @( C( ?9 s# t# w9 i6 ~: ]1 b mov eax,wMsg 2 w) n3 F$ m" I6 u' j, Q .if eax == WM_CLOSE / |' E' l# q$ k .if IsStop != TRUE8 f/ N1 `+ }+ q* i. c9 u. ^. P9 x invoke UnhookWindowsHookEx,hHook ;卸载钩子 ! l8 E. ]- l2 f .endif& [' ~; _0 a. j- J1 P; ]/ E invoke EndDialog,hWnd,NULL0 u. r5 i% L% D .elseif eax == WM_INITDIALOG 4 j4 F8 L5 D4 k invoke LoadIcon,hInstance,ICO_MAIN! E- I! K1 z" T3 X invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax & D& u. t8 Y) p+ h4 h invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE ;窗口最顶层) q' P( d; N, e- T4 H% N mov IsStop,TRUE V! X" q: _: r* A* p& T' G push hWnd 3 Y0 g U" |" k pop hWndMain0 A$ C( e8 ]; j4 ]$ M5 G2 t .elseif eax == WM_COMMAND& \( Z" V7 g' D. Z7 w/ c mov eax,wParam y5 }' ]' h( z5 K5 ~ .if ax == IDOK3 e# E/ e6 X+ Q5 R4 K3 T .if IsStop == TRUE l% j: r1 Q6 f invoke SetDlgItemText,hWnd,IDOK,offset szStop4 X: l: m. @; _ invoke SetWindowsHookEx,WH_JOURNALRECORD,addr _HookProc,hInstance,NULL ;挂钩,日志记录钩子- Z; j6 ?( V3 |& ^" U) R, s$ W .if eax7 R3 {. T7 U5 o. v7 x8 s8 u2 P) [ mov hHook,eax 0 s5 O3 J' D, r# C& D .else ;挂钩失败$ B6 H& p: M! A; Q2 }; e invoke MessageBox,hWnd,offset szErr,offset szCaption,MB_OK or MB_ICONWARNING 8 p" ]6 m+ a z ^* A9 P .endif / c) G2 `( H* K W+ H2 i4 ~ mov IsStop,FALSE 1 c5 F4 j+ U+ v- b- R7 ] .else- _2 b- e/ ]2 o5 u invoke SetDlgItemText,hWnd,IDOK,offset szStart1 V; q9 a* s- e3 C( _7 o& V( p3 Q invoke UnhookWindowsHookEx,hHook: ^& b+ V% O9 g) ? mov IsStop,TRUE ' c' ~- U* D+ ]3 S& Q* j .endif. M; B. W* G. e4 c) R9 n, q .elseif ax == IDCANCEL 4 b4 o/ P/ D* z) } invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL5 n9 [( o+ B- e; Y7 j+ _ .elseif ax == ID_ABOUT 5 i6 M3 r; [1 e$ K invoke ShellAbout,hWnd,offset szCaption,offset szInfo,NULL ;关于对话框 n% Y4 b" f& b- g# e4 ^ T# T* U .endif: J S3 |3 A8 y( I. | .else 7 U) |2 ]$ c7 _5 N7 s3 b" i0 B mov eax,FALSE * s, P+ P8 h- i, Y+ D9 N ret * f$ i$ x4 @, g4 z0 v .endif 4 O; @% ^1 Q, _3 W+ v% t3 g* @3 V mov eax,TRUE ( z/ D/ x; [7 z4 l ret5 n! {3 {2 {0 l: r) _6 o' R ' L' ?) Q) G* [( \_ProcDlgMain endp % R b' X5 N! d& V a9 Y6 i9 ^0 L/ V4 o' i/ O& i. U ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 u9 @( [5 @0 Z3 v; o) {start: / q% [0 y) o) ] invoke GetModuleHandle,NULL# D C* E9 l1 P7 Z mov hInstance,eax 3 J" o9 v! p% {9 I1 c5 B invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL 0 n" L) R5 D0 c' v( H) R invoke ExitProcess,NULL 3 C! A3 i. j7 j: U;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3 {4 f/ x N* `' @9 R end start5 I1 v: l8 c0 g5 T) i ; Z3 f) D! Z2 `; j! j+ r 6 n6 p% o9 t0 n H2 U界面看下图片5 e t7 L5 @3 [% O, ~7 N ' a y% g2 Y' D) W! s& b. F: t' L. E* W 3 G1 i ^ b- u+ ^4 G8 q/ i4 s' w- w" C, o" E I; b. f( R ' G0 H! A- _* L! S o( E/ P+ M: m: S1 p" ~ ' F3 y, m4 E# M7 }& s5 x " h) I$ h1 c) m; O# ~: l
[此贴子已经被作者于2003-10-31 23:37:05编辑过]
$ W! b5 b0 V* Y3 y) Z1 a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
bigfoot 该用户已被删除
2
发表于 2003-11-1 11:10:00 | 只看该作者
搞了个WH_JOURNALRECORD hook,大概是把变灰的控件Enable,有点意思
% H% V2 v, g" h不过这类界面程序实在不是汇编的强项,用了大量的invoke  ,整个程序结构看上去和c别无二致% W+ R8 I, K4 j$ U2 n+ b" }) o( U7 F
汇编的强项不在这里,楼主如果想显耀汇编的强大,这个例子不怎么,* D+ T( N! ?3 l2 K2 F( o
再来一个强一点的原创瞧瞧 ^_^
/ R/ `( k  W* A- Z$ u
9 B8 ?! [2 a( }: k/ i" y# ^- G; c0 F+ f

1 v( t* }2 z6 H
[此贴子已经被作者于2003-11-1 11:16:10编辑过]
. U. b9 e+ R  [) q; P" c3 E

该用户从未签到

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

本版积分规则

关闭

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

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