利用API的消息发送程序原理

利用API的消息发送程序原理 By Shaoyun 2010-03-20

很简单,最基本的几个API函数的应用,我写的这段代码也是最简单实现方法,当然高阶点的通过Hook方式来实现

原理:

通过窗体类名利用FindWindow来获取窗口句柄,再而用FindWindowEx获取编辑框的窗体句柄

借助SendMessage函数发送WM_GETTEXT消息获取编辑框的文本,然后加入自己的消息,发送WM_SETTEXT消息来设置目标程序相应子窗体的内容

这里我给出一段例子代码,点击按钮向记事本追加一段文字。实际应用中还需要设置一个定时器,循环检测目标程序来发送消息。

代码
 1  procedure  TForm1.btn1Click(Sender: TObject);
 2  var
 3  sTarget,sMsg: string ;
 4  hTargetWnd,hEdit:THandle;
 5  szBuff: array [ 0 .. 255 of  Char;
 6  begin
 7      sTarget: = ' notepad ' ;
 8      hTargetWnd: = FindWindow(PWideChar(sTarget), nil );
 9       if  hTargetWnd <> 0   then
10       begin
11        SetForegroundWindow(hTargetWnd);
12        hEdit: = FindWindowEx(hTargetWnd, 0 ,PWideChar( ' Edit ' ), nil );
13         if  hEdit <> 0   then
14         begin
15          SendMessage(hEdit,WM_GETTEXT,SizeOf(szBuff),Integer(@szBuff));
16          sMsg: =  szBuff  +   ' 追加的信息! ' ;
17          SendMessage(hEdit,WM_SETTEXT, 0 ,Integer(PWideChar(sMsg)));
18         end ;
19       end ;
20  end ;

代码测试环境:Windows XP SP3 + Delphi 2010

你可能感兴趣的:(api)