有俩个不懂的地方
.386.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
.data
hWnd dd ? ;初始化一个短字型的句柄
szBuffer db 256 dup (?) ;初始化一个 缓冲区
.const
szCaption db 'SendMessage',0 ;定义一个标题为SendMessage
szStart db '1111',0 ;定义
szReturn db '33333',0
szDestClass db 'MyClass',0 ;目标窗口的窗口类
szText db '22222',0
szNotFound db 'Receive Message Window not found!',0
.code
start:
invoke FindWindow,addr szDestClass,NULL
.if eax
mov hWnd,eax ;找到目标窗口则发送消息
invoke wsprintf,addr szBuffer,addr szStart,addr szText ;先调用wspringtf ,wspringtf是输出缓冲区
invoke MessageBox,NULL,offset szBuffer,offset szCaption,MB_OK ;然后调用MessageBox
invoke SendMessage,hWnd,WM_SETTEXT,0,addr szText ;其次调用sendMessage
invoke MessageBox,NULL,offset szReturn,offset szCaption,MB_OK ;最后调用MessageBox
.else
invoke MessageBox,NULL,offset szNotFound,offset szCaption,MB_OK
.endif
invoke ExitProcess,NULL
end start
第一个是问题 invoke FindWindow,addr szDestClass,NULL
.if eax <----为什么这样表示找到了窗体?这个是不是如果找到是窗体,窗体的句柄就放在EAX里面?
mov hWnd,eax ;找到目标窗口则发送消息 <-----这个的意思是把窗体的句柄发到hWnd里面,还是?
第二个问题 这些代码 invoke SendMessage,hWnd,WM_SETTEXT,0,addr szText ;其次调用sendMessage
这个地方的WM_SETTEXT,前后都没有定义,它哪来的?是系统里面的东西?