|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
先贴上小甲鱼的源码 .data
hWnd dd ?
szBuffer db 256 dup (?)
.const
szCaption db '发信程序',0
szStart db 'Send说:按下OK按钮开始发送消息, 参数param是 %08x!',0
szReturn db 'Send说:消息已经发送!',0
szDestClass db 'MyClass',0 ;目标窗口的窗口类
szText db 'Send说:亲爱的,收到吗?,0
szNotFound db 'Send说:亲,没有找到接收的窗口!',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
start:
invoke FindWindow,addr szDestClass,NULL
.if eax
mov hWnd,eax ; 找到目标窗口则发送消息
invoke wsprintf,addr szBuffer,addr szStart,addr szText
invoke MessageBox,NULL,offset szBuffer,offset szCaption,MB_OK
invoke SendMessage,hWnd,WM_SETTEXT,0,addr szText
invoke MessageBox,NULL,offset szReturn,offset szCaption,MB_OK
.else
invoke MessageBox,NULL,offset szNotFound,offset szCaption,MB_OK
.endif
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start
书上的原话:p115
invoke wsprintf,addr szBuffer,addr szReceive,lParam,lParam
这条语句讲lParam的数值,以及lParam的字符串按照szReceive格式化串定义的格式转换,
并将结果存放到szBuffer中,然后程序将szBuffer中的内容在一个消息框中显示出来
invoke MessageBox,hWnd,offset szBuffer, addr szCaption,MB_OK
疑惑点:如果执行这句invoke wsprintf,addr szBuffer,addr szStart,addr szText
szBuffer中的内容是什么
我认为是:‘按下OK按钮开始发送消息, 参数param是 %08x!’
'Send说:亲爱的,收到吗?
既然老罗的书上说把szBuffer中的内容显示在消息框中 为什么显示出来的内容是
‘按下OK按钮开始发送消息, 参数param是 00402075!’(此值不一定一样)
那后边的那一句 'Send说:亲爱的,收到吗?’
如果说是因为wsprintf参数中addr szStart格式符就一个的话,那可以再加一句就像receive中那样
szStart db 'Send说:按下OK按钮开始发送消息, 参数param是 %08x!',0dh,0ah
db 'Send说:指向的字符串是 "%s"',0
那么wsprintf如何更改?
我的意思是发送的时候把Buffer中的内容都显示出来
望高人指点一二
补充内容 (2012-10-19 22:09):
代码是直接复制的 复制时格式还好好的 传上来就变乱了
此代码是别人的老婆 |
|