惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
Stack Overflow Blog
Stack Overflow Blog
美团技术团队
博客园_首页
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
B
Blog
D
DataBreaches.Net
腾讯CDC
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
月光博客
月光博客
V
V2EX
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
The Cloudflare Blog
博客园 - 叶小钗
Y
Y Combinator Blog

博客园 - shaoyun

Python抓取百度搜索结果 多线程采集器的核心代码 ThinkPHP2.1模版使用笔记 - 模版嵌套/AJAX级联 畅想无线显示技术 ASP.Net 一步一步学习分页(适合初学者) - shaoyun - 博客园 OAuth协议分析一 通用四级联动下拉列表 通用手动分页方法 通用三级联动下拉列表 Indy 邮件发送的例子 Indy 组件学习注意事项 Delphi DLL 的编写 Discuz!NT3.1 子目录安装实例 Delphi 托盘程序示例 Delphi ADO 学习笔记 SQL获取数据表的空间占用 C#编写简单的系统服务管理器 很久没有写博了,发发挠骚 Twitter被封后教你继续访问的方法
利用API的消息发送程序原理
shaoyun · 2010-03-20 · via 博客园 - shaoyun

利用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