下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2003-10-31 23:31:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1 Z4 ]$ y/ R8 ^0 z) K3 J ; EnableButton ALL For bbs.xsclub.com * ~6 B& C* h5 ~" L+ s$ w; by 游侠无极限, D1 [9 m8 D. K6 Y6 U ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>) o# S" A; i% x: p ; EndableButton.asm : x* q3 [ y9 \2 x; 基于对话框资源 6 o% v1 Q6 \+ K;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>0 x" n; P( h! w" j2 [2 m- j% ` .386 3 @9 V X H' [# ]4 {' u- b .model flat, stdcall / h5 W+ ^ ~3 l+ J" Q/ s [ option casemap :none0 x! P6 \% K% e- S3 o2 y4 D ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>, E+ l3 n" M' n# W: b% [ ; Include 文件定义2 ~& f% u" D% z) U8 w ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - j( S* | N5 I- yinclude windows.inc % W" E5 c* Q( U$ \" Einclude user32.inc5 V% E3 c/ |2 X7 p includelib user32.lib 6 A! e% z W9 m0 O, _* A# `6 ?& vinclude shell32.inc) t2 j5 X2 N( O4 m includelib shell32.lib ) V" W; f Z& @, tinclude kernel32.inc ! L2 I E6 d* }* ?includelib kernel32.lib # c5 K* Z) J1 c0 N;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> , C+ {- Z" G* f! O3 R; q; Equ 等值定义 7 C. U' e$ a& g, j$ P;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 J4 w+ Q* b0 r3 U" z* `ICO_MAIN equ 104 ;图标& ^$ b" W8 j. T! m DLG_MAIN equ 101 ;对话框$ I9 n4 @! q0 z. w) A; f EDIT_MAIN equ 1002 ;编辑框# Z. ~$ M1 @& \8 D# ?+ P ID_ABOUT equ 1000 ;关于按钮8 @3 h2 V) n7 w- P ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 w* G1 B) U+ c; 数据段! u) Q+ b% x# Y ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> W l7 e g, Z/ R .data?$ M/ ^, y. Y1 [& i , q- n7 L0 l) j3 L0 c! E hInstance dd ? 4 R( N' |& b1 O2 b# K3 j$ e* \hHook dd ? Y. q" w! K' J hWndMain dd ?+ i* x6 g& G3 T0 e: W7 A. o/ | IsStop dd ?: [% h2 L [ D8 R 8 P# D4 P& T& c) r, T/ b( J .const 1 C; R1 C) i' e3 i9 A/ ?( NszStart db '启动',06 F3 S" T Y/ e szStop db '停止',0 . F, p3 T7 H6 y5 _szCaption db 'EnableButton',0 9 z5 t( S( J/ }1 W4 ^/ E& ZszInfo db '版权没有 03.8.20 游侠无极限制作',0 5 k1 z0 T& b$ v! b6 CszErr db '安装钩子失败,原因不明',0 9 r/ R3 W% B2 E- EszWnd db '%lxH',0. ~! x3 J* a0 ?9 B ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6 V# A+ y# v* U ; 代码段6 _& l$ o. g) E* n5 @ ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> s" p+ X$ P6 r' B7 Z7 C .code( S: e2 g6 b0 h; a. G1 V6 w ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6 K* n4 ]4 P y* }& q ;钩子回调函数 ' U( A& p8 N/ Y0 g' r& Z; E& u0 s2 H;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1 |1 X/ \# b7 Z _HookProc proc _dwCode,_wParam,_lParam 4 {7 ?5 A) F, B- ^8 u6 ?+ N1 t local @szBuffer[100]:byte * k3 I% S }) L% P invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam ;钩子链传递 ( r) M: c9 ^0 D6 ~: J" Q pushad/ z5 A) |! A( Y3 {) U .if _dwCode == HC_ACTION ;Windows要移除一条消息时3 s$ R+ f, s- ]! g mov ebx,_lParam " U. q2 c5 W5 y2 F- B; m assume ebx:ptr EVENTMSG e" o& O" c3 h- ?: W. Q* V. N .if [ebx].message == WM_LBUTTONDOWN) L9 Q6 x4 p8 }. A) s mov eax,[ebx].hwnd ;取得当前鼠标所在控件句柄 2 U) B( @/ L* o+ P9 z$ X+ P$ c invoke wsprintf,addr @szBuffer,addr szWnd,eax0 P2 P7 V' ~, C, G W/ P/ t invoke SetDlgItemText,hWndMain,EDIT_MAIN,addr @szBuffer ;显示句柄# Z8 \) e, \1 G invoke IsWindowEnabled,[ebx].hwnd ;判断控件是否无效' X1 R N1 _3 @( t" F2 x5 E, S& _ .if eax == FALSE 8 R+ H/ i* T/ f$ O invoke EnableWindow,[ebx].hwnd,TRUE ;使控件可用6 W( T. p) R, z2 _$ ^7 p/ h .endif4 o9 Z/ @. ?$ m. X ;.endif# ^# }, a% ?4 X( L. z .endif, T& {5 G3 E, b assume ebx:nothing' K* @3 w0 V0 w, K; r" `5 V .endif 4 Z, L) H& I( |& [2 r, x( s; y* H4 ]( W+ f7 D# y" A/ i5 B popad2 h8 C' Y% g# S2 g xor eax,eax$ u; y- H$ G. ]7 h" K8 a- T, ]0 V9 t ret6 D. ?' f. M5 I& w! }3 h _HookProc endp4 [/ O3 Z6 ~2 Z; g8 A. g! y: P2 L/ E$ V4 v ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+ U' A& b n% m 1 r+ I: |) P6 m_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam 9 A" X6 V3 t( P" S Q" e. S0 ]4 [' x; ~& q- u2 q mov eax,wMsg , E' x. b1 O9 [% f .if eax == WM_CLOSE s* L7 c6 P. g* g+ z0 m. @ .if IsStop != TRUE8 P+ f `5 X/ s% ~- V invoke UnhookWindowsHookEx,hHook ;卸载钩子 ; Y/ T( q ~* E( ?& m$ F .endif ( O) q* O, ~2 V$ E' |6 w invoke EndDialog,hWnd,NULL ) {# J4 s" c( T- H1 h9 \ .elseif eax == WM_INITDIALOG ) y( i4 N, T' A invoke LoadIcon,hInstance,ICO_MAIN1 y- u; s8 v- b& m; X0 z% M invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax1 O: D: c, v; F A: b; O invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE ;窗口最顶层 + u/ }- c g0 i. A' ` mov IsStop,TRUE $ N" ^6 d" E) Z7 T push hWnd + N% _' q' P0 d+ `& B# v' d pop hWndMain 6 P" r1 }0 M$ E9 c" U .elseif eax == WM_COMMAND. g1 R- p4 Q3 N7 Z+ \ mov eax,wParam ( l9 Y2 ^. m. X( i" O$ v9 H .if ax == IDOK! P; T! o. h I, l .if IsStop == TRUE! n8 \3 q2 o+ R2 n- O2 p invoke SetDlgItemText,hWnd,IDOK,offset szStop ! v- M7 K1 c/ a: h/ _ invoke SetWindowsHookEx,WH_JOURNALRECORD,addr _HookProc,hInstance,NULL ;挂钩,日志记录钩子 ' L( T( r' R2 q0 i% X" U .if eax( X5 _+ N- y- d7 o" \ mov hHook,eax 9 \3 ^0 v+ N* G6 u& | .else ;挂钩失败 4 c0 D8 V* x% o6 ?: u# \ P- Y invoke MessageBox,hWnd,offset szErr,offset szCaption,MB_OK or MB_ICONWARNING 4 ]7 Y# q3 m9 \4 d1 ` .endif" p2 e+ L0 v( |: L6 ` mov IsStop,FALSE5 a! U) g r- i; H2 N .else 2 ^8 ?' e* q5 A7 F& g$ v+ B invoke SetDlgItemText,hWnd,IDOK,offset szStart ) l. j8 [6 q/ `. [7 J invoke UnhookWindowsHookEx,hHook8 S0 u% y" f9 Z mov IsStop,TRUE; Y6 M; x) p4 R .endif . \$ X, l5 m7 |5 F. d/ \/ J1 N .elseif ax == IDCANCEL ; g/ y6 j x0 k2 { invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL8 V/ J1 n8 S6 \8 }2 e .elseif ax == ID_ABOUT 2 V* Y! l0 ^# b& F" W2 f invoke ShellAbout,hWnd,offset szCaption,offset szInfo,NULL ;关于对话框2 {: c3 l4 _( |9 u9 A .endif1 l. t% f- v; c% h8 F( t" |. T1 t G# w .else" a( t1 ^9 m" z& p8 `. M mov eax,FALSE1 z$ p: A4 P: Y& V, ~8 D! j ret: Z3 o0 M: P9 @! w- A' v' v) p .endif' _: c+ W; H1 ^( l mov eax,TRUE 7 k3 C3 ~( J) }# j ret* @5 u+ M* Q) A / r, L/ P1 J3 t2 {9 M( }2 p_ProcDlgMain endp . w- h, L7 n" k7 R+ o# Y' r3 x m% [- ]5 G# T1 k ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> % ~: G e: N0 ~$ q* N# A4 O) mstart:$ p/ r$ u# e0 K$ Z; r invoke GetModuleHandle,NULL( ?/ y8 c5 l; U' ]- O' F# ~6 o& ~4 E mov hInstance,eax! k5 l6 S# a/ o% S+ b8 W( }4 W7 a invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL ; w' r* Z k0 `9 y( ~) i" L& } invoke ExitProcess,NULL * g& U0 Q8 V! N9 `/ U; C6 z;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>: @- u8 f) v5 W+ T+ K Y! t end start6 c# R1 y( ^4 v6 Z2 { 2 r4 x% ?3 ^$ Z( d' J" \, \$ l; m2 N0 M3 p$ P/ d6 M% l u4 ?% s 界面看下图片5 b! s7 m. I- e% l! {" n/ `& ~, f ( @" i2 v, Y$ ?: r 2 A8 J% }3 B3 v6 S x- K, {" s+ o- g$ q# f - V' n( C: U2 A. I9 l. n/ O# l6 `; g! q2 n4 D " l9 c. U$ E& X* |9 N) z/ {( F9 p " y/ X% H f4 {( [
[此贴子已经被作者于2003-10-31 23:37:05编辑过]
z2 X2 m% c& B2 K% v, @5 N9 T6 x- k+ i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩 转发到微博

该用户从未签到

3
发表于 2003-11-19 00:14:00 | 只看该作者
bigfoot,留个QQ怎么样。
bigfoot 该用户已被删除
2
发表于 2003-11-1 11:10:00 | 只看该作者
搞了个WH_JOURNALRECORD hook,大概是把变灰的控件Enable,有点意思
5 p% C1 U+ |% g! d( z* d不过这类界面程序实在不是汇编的强项,用了大量的invoke  ,整个程序结构看上去和c别无二致, `% B! ^$ d6 K4 G; K8 b' ^. d. p
汇编的强项不在这里,楼主如果想显耀汇编的强大,这个例子不怎么,
/ c. V  B0 p% \2 s. I3 j& i6 _& J再来一个强一点的原创瞧瞧 ^_^9 `3 a( k7 h( e6 f* ?! W. ~
7 E2 d: `3 x* d0 F% ]3 D
3 V! ~' ]$ ~; f; n4 R

  V) X, L% ~5 `7 K8 Y  Y
[此贴子已经被作者于2003-11-1 11:16:10编辑过]

+ n; U/ G6 ?* U& M3 X
关闭

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

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