鹿我所录的博客

记录我在学习C#中的点点滴滴,记录下以备后来人借鉴。

 

C++ 一个程序获取另一个程序Edit控件的内容

//一个程序获取另一个程序Edit控件的内容

//根据指定程序的标题名获取改程序窗口的句柄
HWND hWnd=::FindWindow(NULL,"zhang001");
if(hWnd)
{
MessageBox("get windows");
//根据窗口句柄获取EDIT控件的ID,但是这个ID是通过VS工具spy++获取的
HWND h = ::GetDlgItem(hWnd,0x3E9);
if (h!=NULL)
{
CString str0;
//要知道SendMessage用法,特别是第三个参数
//根据EDIT控件的ID获取控件内容,存放到str0中
::SendMessage(h,WM_GETTEXT,20,(LPARAM)(LPCTSTR)str0);
//将获得的内容放到本程序指定的EDIT控件中进行显示
GetDlgItem(IDC_EDIT1)->SetWindowText(str0);
MessageBox(str0);
}
}
else
{
MessageBox("fail!");
}
 
运行结果如下:
2014年07月08日 - 月圆花青 - 玉佩
2014年07月08日 - 月圆花青 - 玉佩
采用以上程序由于采用CString,获取的内容大小不定,当制定的缓存和制定的大小不一样时就会产生一下的错误
2014年07月08日 - 月圆花青 - 玉佩
整个程序改为一下代码,就好了:
 
复制代码
//一个程序获取另一个程序Edit控件的内容

 //根据指定程序的标题名获取改程序窗口的句柄

 CString str;

 GetDlgItemText(IDC_TITLE,str);

 HWND hWnd=::FindWindow(NULL,str);//"zhang001"

 if(hWnd)

 {

 MessageBox("get windows");

 //根据窗口句柄获取EDIT控件的ID,但是这个ID是通过VS工具spy++获取的

 HWND h = ::GetDlgItem(hWnd,0x3E9);

 if (h!=NULL)

 {

 //CString str0;

 char temp[50];

 //要知道SendMessage用法,特别是第三个参数

 //根据EDIT控件的ID获取控件内容,存放到str0中

 ::SendMessage(h,WM_GETTEXT,sizeof(temp)/sizeof(char),(LPARAM)temp);//第三个和第四个参数是缓存大小和缓存指针

 //将获得的内容放到本程序指定的EDIT控件中进行显示

 GetDlgItem(IDC_EDIT1)->SetWindowText(temp);

 //MessageBox(str0);

 }

 }

 else

 {

 MessageBox("fail!");

 }
复制代码

 注:要想获取某控件的位置 可以使用下面的方法

GetDlgItem(控件ID)->GetWindowRect(&rect);//获取控件基于全频的位置
 ScreenToClient(rect);//转换为对话框上的相对位置

 如何获取控件的ID

 

复制代码
MFC::
CWnd *pWnd = GetFocus(); 
if(pWnd == NULL)
;//no focus
else
UINT nID = pWnd->GetDlgCtrlID();

SDK:
HWND hWnd = ::GetFocus();
if(hWnd == NULL)
;//no focus 
else
UINT nID = ::GetDlgCtrlID(hWnd);

GetFocus: The return value is the handle to the window with the keyboard focus. 
If the calling thread's message queue does not have an associated window with the keyboard focus, the return value is NULL.
复制代码

 

posted on   鹿我所录  阅读(12476)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2011-09-10 关于 axWebBrowser 控件的使用注意事项

导航

统计

点击右上角即可分享
微信分享提示