首页
社区
课程
招聘
[求助]请各位大侠帮忙看看那里写错了,偶是菜鸟
发表于: 2010-2-22 17:36 4062

[求助]请各位大侠帮忙看看那里写错了,偶是菜鸟

2010-2-22 17:36
4062
刚学汇编编程,写了个小程序,可是一运行就程序卡死了,就能弹出个MessageBox提示框,对话框出来就卡了,请搭建帮忙解决一下,编写的环境是Radasm2.2.1.9,运行环境是XP sp3。源码在附件中......................

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 56
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
修改窗口过程代码为:
        .if        eax ==        WM_INITDIALOG
        invoke  MessageBox,0,addr a,addr a,MB_OK
        .elseif        eax ==  WM_CLOSE
        invoke  EndDialog,hWnd,0
        .else                               
                        mov        eax,FALSE
                        ret
        .endif
2010-2-22 18:14
0
雪    币: 172
活跃值: (573)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
Yeah!成功了,但这是为什么呢??
2010-2-22 18:34
0
雪    币: 1259
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
stu
4
Typically, the dialog box procedure should return TRUE if it processed the message, and FALSE if it did not. If the dialog box procedure returns FALSE, the dialog manager performs the default dialog operation in response to the message.
你只响应WM_INITDIALOG和WM_CLOSE两个消息,其他的消息没法处理,当然卡死了。
MSDN上说了,不处理的消息就要返回false,不知道这里用DefWindowProc行不行,从来没有试过,个人认为也许大概说不准应该可以吧。
另外建议LZ不要在一个invoke里面用俩addr,否则出错地。
2010-2-22 18:49
0
雪    币: 172
活跃值: (573)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
对哈,就想着这两个消息去了,别的都忘了
偶是想写这么个软件,把当前活动的窗口的句柄输出到一个文本框里,(先不管输出的东西我能不能看懂),附件是我写的结果,但发现效果不是预料中的那样,在请大虾们看看
上传的附件:
2010-2-22 19:49
0
雪    币: 172
活跃值: (573)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
对哈,不用addr,难道要一个一个的用LEA来弄吗,小软件还可以,大软件就太麻烦了吧,offset又不能取局部变量的地址,有别的方法么?
2010-2-22 19:55
0
雪    币: 56
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
IpString:指向一个以NULL结尾的字符串指针,该字符串指针包含了将被复制到控件的文本。

你取到的是个整数型的数据。你放编辑框里我想应该是变成ASCII码了.
2010-2-23 03:20
0
雪    币: 172
活跃值: (573)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我的意思是这个程序取不到当前活动窗口的句柄,只是在他本身是活动窗口时编辑框才有显示,是不是GetActiveWindow这个API不行啊??那该用哪个API?
2010-2-23 07:32
0
游客
登录 | 注册 方可回帖
返回
//