利用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..255of 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

posted @ 2010-03-20 14:42  shaoyun  阅读(392)  评论(0编辑  收藏  举报