首页
社区
课程
招聘
[求助]CEDIT派生类
发表于: 2009-9-6 00:28 7765

[求助]CEDIT派生类

2009-9-6 00:28
7765
编辑框里的输入限制,MFC解决是从CEDIT派生一个类,拦截按键消息,如果超过指定位数就返回
mfc里可以限制的.有函数设置,是EM_LIMITTEXT消息:是用来指定文本框里用户能输入的最大字符长度
用OD调试,怎么解决这个限制,取消或修改限制。
收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 952
活跃值: (1816)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你发个EM_LIMITTEXT消息不就得了?
2009-9-6 10:12
0
雪    币: 546
活跃值: (1570)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
3
【文章标题】: 解除MFC的Edit输入文字长度限制
【文章作者】: 漏网之鱼
【作者邮箱】: lwzy-crack@163.com
【作者主页】: http://lwzy-crack.blog.163.com
【作者QQ号】: 530747686
【下载地址】: 自己搜索下载
【编写语言】: vc ++
【操作平台】: XP SP2
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  OD载入程序,F9运行,输入测试字符
  
  OD命令行里面输入 bp GetWindowTextA
  
  点击“显示当前字符个数”按钮。
  程序中断在
  77D3212B >  6A 0C           PUSH 0C
  77D3212D    68 9021D377     PUSH user32.77D32190
  77D32132    E8 8964FEFF     CALL user32.77D185C0
  77D32137    8B7D 0C         MOV EDI,DWORD PTR SS:[EBP+C]
  77D3213A    33DB            XOR EBX,EBX
  77D3213C    3BFB            CMP EDI,EBX
  77D3213E    0F84 398F0000   JE user32.77D3B07D
  77D32144    395D 10         CMP DWORD PTR SS:[EBP+10],EBX
  77D32147    0F84 308F0000   JE user32.77D3B07D
  77D3214D    895D FC         MOV DWORD PTR SS:[EBP-4],EBX
  77D32150    881F            MOV BYTE PTR DS:[EDI],BL
  77D32152    8B4D 08         MOV ECX,DWORD PTR SS:[EBP+8]
  77D32155    E8 7663FEFF     CALL user32.77D184D0
  77D3215A    8BF0            MOV ESI,EAX
  77D3215C    8975 E4         MOV DWORD PTR SS:[EBP-1C],ESI
  77D3215F    3BF3            CMP ESI,EBX
  -----------------------------------------------------------------------------------------------
  
  在反汇编窗口中跟随。
  
  73D45CD8  |.  8B4D 10       MOV ECX,DWORD PTR SS:[EBP+10]            ;  来到这里
  73D45CDB  |.  6A FF         PUSH -1
  73D45CDD  |.  E8 4FCBFEFF   CALL mfc42.#CString::ReleaseBuffer_5572
  73D45CE2  |.  EB 0B         JMP SHORT mfc42.73D45CEF
  73D45CE4  |>  8B45 10       MOV EAX,DWORD PTR SS:[EBP+10]
  73D45CE7  |.  FF30          PUSH DWORD PTR DS:[EAX]                  ; /Arg2
  73D45CE9  |.  56            PUSH ESI                                 ; |Arg1
  73D45CEA  |.  E8 9056FFFF   CALL mfc42.#AfxSetWindowText_1246        ; \#AfxSetWindowText_1246
  73D45CEF  |>  5F            POP EDI
  73D45CF0  |.  5E            POP ESI
  73D45CF1  |.  5D            POP EBP
  73D45CF2  \.  C2 0C00       RETN 0C                                  ;  F4到这里,然后F8一次
  
  -----------------------------------------------------------------------------------------------
  
  来到这里
  
  00401328   .  6A 05         PUSH 5                     ;  这里是将Edit1输入字符的长度压栈。修改为你想要的程度。
  0040132A   .  53            PUSH EBX
  0040132B   .  56            PUSH ESI
  0040132C   .  E8 FF040000   CALL <JMP.&MFC42.#DDV_MaxChars_2289>
  00401331   .  83C7 64       ADD EDI,64
  00401334   .  57            PUSH EDI
  00401335   .  68 EC030000   PUSH 3EC
  0040133A   .  56            PUSH ESI
  0040133B   .  E8 F6040000   CALL <JMP.&MFC42.#DDX_Text_2370>
  00401340   .  6A 0A         PUSH 0A                    ;  这里是将Edit2输入字符的长度压栈。修改为你想要的程度。
  00401342   .  57            PUSH EDI
  00401343   .  56            PUSH ESI
  00401344   .  E8 E7040000   CALL <JMP.&MFC42.#DDV_MaxChars_2289>
  00401349   .  5F            POP EDI
  0040134A   .  5E            POP ESI
  0040134B   .  5B            POP EBX
  0040134C   .  C2 0400       RETN 4
  0040134F      90            NOP
  00401350   .  A1 34214000   MOV EAX,DWORD PTR DS:[<&MFC42.#CDialog::messageMap_4234>]
  00401355   .  C3            RETN
  -----------------------------------------------------------------------------------------------
  
  
  好了,大功告成。试试吧。
  
  
--------------------------------------------------------------------------------
【经验总结】
  多动手。发现问题,自己寻找解决问题的方法。实在找不到了。在求助。
  
--------------------------------------------------------------------------------
【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年09月06日 10:55:34

本代码的着色效果由xTiNt自动完成
下载xTiNt

附件下载: 解除Edit 限制.rar
上传的附件:
2009-9-6 11:04
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个方法好象不适合我调试的程序 我说的是 在输入框里面粘贴数字进去 结果位数被限制 那个小竖条在那跳过来条过去的
2009-9-7 14:49
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
编辑框里的输入限制,MFC解决是从CEDIT派生一个类,拦截按键消息,如果超过指定位数就返回
而不是像小鱼的那样 到指定位数 就定那了
2009-9-9 12:47
0
雪    币: 546
活跃值: (1570)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
发一个你的程序上来。
2009-9-10 11:21
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我的程序大点  发不动   要不我加你QQ得了
2009-9-11 01:26
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
土匪 你咋不上来了呀 没人指点我了都
2009-9-13 13:36
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
CEDIT派生类 是哪方面的技术 请详细的回答  谢谢
2009-9-23 02:04
0
雪    币: 2523
活跃值: (520)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
窗口子类化技术
2009-9-23 08:24
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
那么 用OD调试的时候 怎么修改或取消这个 窗口子类化技术 的功能呢
2009-9-26 00:29
0
游客
登录 | 注册 方可回帖
返回
//