//一个程序获取另一个程序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!");
}
 
运行结果如下:
采用以上程序由于采用CString,获取的内容大小不定,当制定的缓存和制定的大小不一样时就会产生一下的错误
整个程序改为一下代码,就好了:
 
//一个程序获取另一个程序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[];

 //要知道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.

C++ 一个程序获取另一个程序Edit控件的内容的更多相关文章

  1. Windows获取其他进程中Edit控件的内容

    最近做的MFC项目中,有个获取其他进程中Edit控件内容的需求,本来以为是个很简单的问题,但是来来回回折腾了不少时间,发博记录一下. 刚开始拿到这个问题,很自然的就想到GetDlgItemText() ...

  2. 偶写的第一个控件,一个用选择代替输入的Edit控件…

    FDataSource :=TDataSource.Create(self); FDBGrid.FreeNotification(self); FADOQuery.FreeNotification(s ...

  3. 小程序获取openid 小程序授权

    小程序获取openid 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系. wx.login(Object object) 调用接口获取登录凭证(cod ...

  4. 根据获取的窗口句柄遍历窗口Edit控件

    网上说遍历窗口控件有两种方法: 1),使用EnumChildWindows,没有深究,     学习网址如下:http://blog.sina.com.cn/s/blog_60ac1c4b010116 ...

  5. WPF 程序如何移动焦点到其他控件

    原文:WPF 程序如何移动焦点到其他控件 WPF 中可以使用 UIElement.Focus() 将焦点设置到某个特定的控件,也可以使用 TraversalRequest 仅仅移动焦点.本文介绍如何在 ...

  6. 一个Demo让你掌握Android所有控件

    原文:一个Demo让你掌握Android所有控件 本文是转载收藏,侵删,出处:"安卓巴士"      下面给出实现各个组件的源代码: 1.下拉框实现--Spinner packag ...

  7. QT 创建一个具有复选功能的下拉列表控件

    最近研究了好多东西,前两天突然想做一个具有复选功能的下拉列表框.然后在网上"学习"了很久之后,终于发现了一个可以用的,特地发出来记录一下. 一.第一步肯定是先创建一个PROJECT ...

  8. C# 向程序新建的窗体中添加控件,控件需要先实例化,然后用controls.add添加到新的窗体中去

    C# 向程序新建的窗体中添加控件,控件需要先实例化,然后用controls.add添加到新的窗体中去 Form settingForm = new Form(); setForm deviceSet ...

  9. Windows消息对Edit控件的处理

    例如对windows发消息让文本选中. SendMessage(Text1.hwnd,EM_GETSEL,0,-1 ); EC_LEFTMARGIN(&H1) EC_USEFONTINF // ...

随机推荐

  1. Spring触发器配置Quartz

    参考文献:http://blog.csdn.net/liaq325/article/details/8269439 http://sundoctor.iteye.com/blog/441951 业务类 ...

  2. 转weblogic 10.3新建域

    一.安装前准备 1.解决linux中文乱码问题 修改/etc/sysconfig/i18n文件 #LANG="en_US.UTF-8"#SUPPORTED="en_US. ...

  3. odoo.cli.main()指的是哪里?OpenERP的第二根线头儿

    接上回,odoo-bin中调用了odoo.cli.main(),去哪儿找? cli目录容易找 跟随__init__.py的脚步 import logging import sys import os ...

  4. SQL Server中常用的SQL语句(转):

    SQL Server中常用的SQL语句 转自:http://www.cnblogs.com/rainman/archive/2013/05/04/3060428.html 1.概述 名词 笛卡尔积.主 ...

  5. 公钥与私钥,HTTPS详解

    1.公钥与私钥原理1)鲍勃有两把钥匙,一把是公钥,另一把是私钥2)鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把.3)苏珊要给鲍勃写一封保密的信.她写完后用鲍勃的公钥加密,就可以达到 ...

  6. python之文件操作

    python文件操作 举例:将一个文本文件转成十六进制形式后,保存到另一个文件中. f = open('mycert.cr', 'r') str = f.read() list = [] for ch ...

  7. I do not want to inherit the child opacity from the parent in CSS(不想让子元素继承父元素的透明度)

    Instead of using opacity, set a background-color with rgba, where 'a' is the level of transparency. ...

  8. Array补充方法

    Array.prototype.Contain = function (item) { var arr = this; if (arr == null || arr.length == 0) { re ...

  9. Access使用参数化UPDATE数据时,数据无法更新的问题

    今天update access数据库时,使用了参数化的方式,结果不报错,但是数据也没有更新.经过google发现access使用参数化时,参数位置必须和赋值顺序相同才行,否则更新时就会出现数据无法更新 ...

  10. 深入理解 Laravel Eloquent(三)——模型间关系(关联)

    Eloquent是什么 Eloquent 是一个 ORM,全称为 Object Relational Mapping,翻译为 "对象关系映射"(如果只把它当成 Database A ...