C++的进程间响应技术

本文介绍了如何在Windows环境下,通过C++使用API函数获取目标应用程序窗口句柄,并向其发送消息来实现进程间响应。具体包括搜索窗口、遍历子窗口、发送消息等功能,以修改标题、文本、模拟按钮点击等操作为例,展示了C++对其他应用程序进行控制的方法。
摘要由CSDN通过智能技术生成

                           C++的进程间响应技术

  吴小岭

在 Windows环境中,一个应用程序按指定方式响应另一个应用程序的解决方法一般是利用 DDE,这需要作出响应的一方提供DDE服务。但是,如果作出响应的一方没有这种服务,我们就没有别的办法了吗?当然有,那就是向应用程序发送消息,应用程序接收到标准的 Windows消息后,就会完成相应的操作。 
 
要向应用程序发送消息,首先要得到它的窗口句柄,这可以通过两个 API函数 GetWindow和 GetWindowText来实现。首先用GetWindow函数遍历所有的 Windows窗口,再用 GetWindowText函数得到每个窗口的标题,如果得到的标题和我们想要查找的窗口的标题一样,就得到我们想要的窗口句柄了。应用程序的窗口是一个树状结构,每一个子窗口下还可能有子窗口,要得到所有子窗口的句柄,就要遍历整个树,为了实现这一点,我们在程序中用了一个简单的堆栈操作。有了具体的窗口句柄后 ,就可以通过发送消息实现我们想实现的操作。本文举了几个简单的例子,实现了一些比较常用的操作,如修改按钮或文本框中的文字,实现从一个程序控制另一个应用程序中的按钮单击等。 
 
图 1是程序运行的主窗体画面:
 
 
下面是在 C++ Builder中实现的源程序部分代码: 
 
单元文件 Unit1.cpp 
 
# include <vcl.h>
 
# pragma hdrstop 
 
# include“ Unit1.h” 
 
# pragma package(smart_init) 
 
# pragma resource“* .dfm” 
 
TForm1* Form1; 
 
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) 
 

 

 
void __fastcall TForm1::btnSearchClick(TObject* Sender) 
 
{  
 
搜索标题和 txtTitle中的文本相符合的窗口,把搜索到的窗口句柄放到 h_Wnd中 ,并把它的所有子窗口的句柄放到数组hWndArray中 
 
char Search[128]; 
 
char ClassName[128]; 
 
HWND h_Child; 
 
int currPos; 
 
int cmpLen; 
 
currPos=0; 
 
lstClassName- >Clear(); 
 
lstControlText- >Clear(); 
 
memoReadWrite- >Clear(); 
 
h_Wnd=GetWindow(Form1- >

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值