Windows获取其他进程中Edit控件的内容
最近做的MFC项目中,有个获取其他进程中Edit控件内容的需求,本来以为是个很简单的问题,但是来来回回折腾了不少时间,发博记录一下。
刚开始拿到这个问题,很自然的就想到GetDlgItemText():
UINT GetDlgItemText(
HWND hDlg, // handle to dialog box
int nIDDlgItem, // control identifier
LPTSTR lpString, // pointer to buffer for text
int nMaxCount // maximum size of string
);The GetDlgItemText function retrieves the title or text associated with a control in a dialog box.
看API的描述和要实现的需求一样,自然就用起来了,可发现不管怎样这个API始终调用失败,获取不到内容。一直以为是代码哪里出问题了,调试好久。后来Google之后在CSDN论坛上找到个老帖,得知这个API只有在Windows 2K之前的系统才能跨进程使用,无奈放弃。
于是查了下,还有一个GetWindowText()
int GetWindowText(
HWND hWnd, // handle to window or control
LPTSTR lpString, // text buffer
int nMaxCount // maximum number of characters to copy
);The GetWindowText function copies the text of the specified window's title bar (if it has one) into a buffer. If the specified window is a control, the text of the control is copied. However, GetWindowText cannot retrieve the text of a control in another application.
描述里面很清楚写着不能对其他程序使用,又一次失败。
PS:吐槽一下,为什么GetDlgItemText()里面不写这句话,浪费俺的时间。╮(╯▽╰)╭
解决方法:使用SendMessage()向进程发WM_GETTEXT消息获取。
SendMessage(handle,message,Wparam,lparam);
Handle为窗口句柄,
message为消息类型,
wparam和lparam为消息参数;
WM_GETTEXT
An application sends a WM_GETTEXT message to copy the text that corresponds to a window into a buffer provided by the caller.
其实使用这个消息等于用GetwindowText()。。。。
Windows获取其他进程中Edit控件的内容的更多相关文章
- C++ 一个程序获取另一个程序Edit控件的内容
//一个程序获取另一个程序Edit控件的内容 //根据指定程序的标题名获取改程序窗口的句柄 HWND hWnd=::FindWindow(NULL,"zhang001"); if( ...
- 【VC版】如何获取其他进程中ListView控件中的内容
如果需要C#版的,可以看下我之前写的:C#如何获取其他程序ListView控件中的内容 获取其他进程的数据需要使用到以下几个函数: VirtualAllocEx() VirtualFreeEx() W ...
- ASP.NET 获取不同frame中的控件
最近在做网站时遇到一个问题,需要获取不同frame中的控件,请教了一些同事,他们都说是无法取到的, 在网上查找了很多资料,找到了解决方法,现在整理一下当初的解决思路: 1.我需要在mainFrame中 ...
- 获取其他进程中ListBox和ComboBox的内容
(*// 标题:获取其他进程中ListBox和ComboBox的内容 说明:Window2000+Delphi6调试通过 设计:Zswang 支持:wjhu111@21cn.com 日期:2004-0 ...
- vc中edit控件使用总结
通过类向导可以生成两种类成员变量,一种是cstring类型,一种是cedit类型.在程序中使用时如果只是简单的获取 edit控件内容,或设置简单的内容建议使用cstring类型成员变量.示例:CStr ...
- 一种导致 emwin 中 EDIT 控件不显示的情况
@2018-12-11 [小记] 设计界面中使用了 EDIT 控件,但在其初始化语句中误使用了 text-color 属性API,导致了控件 EDIT 中的 Text 无法显示,具体如下 hItem ...
- VC中edit控件使用
SetSel(start,end)作用:定制EDIT的所选择内容.间接地可以用于定位光标位置. 使用例子:EXP1:设置光标CEdit* pEdit=(CEdit*)GetDlgItem(I ...
- gridview_RowCommand 获取当前行中的控件
<asp:GridView ID="gvStorglog" runat="server" Width="100%" SkinID=&q ...
- MFC中EDIT控件实现换行
\n是C下的回撤换行.在MFC下得用\r\n.
随机推荐
- Android之UI--重绘EditText以及实现Button的渐变色
在本文中实现的是比较普遍的一个对EditText的重绘以及对于按钮或窗口添加渐变色. 因为EditText是继承于TextView的,所以可以实现对EditText的重绘,在重绘的时候只需要继承Edi ...
- Android_ViewFlipper
xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...
- json与jsonp区别浅析(json才是目的,jsonp只是手段)
一言以蔽之,json返回的是一串数据:而jsonp返回的是脚本代码(包含一个函数调用): JSON其实就是JavaScript中的一个对象,跟var obj={}在质上完全一样,只是在量上可以无限扩展 ...
- Fedora 19修改主机名
Distribution为Fedora 19 方式一(重启后失效,需root权限): hostname 新主机名 [root@promote hadoop]# hostname promote.cac ...
- Java实现SSO
摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO ...
- oracle 12 C启动问题
启动时出现以下报错信息: SQL> startup; ORA-48146: missing read, write, or exec permission on directory during ...
- python输出1到100之和的几种方法
1. 使用内建函数range print sum(range(1,101)) 2. 使用函数reduce print reduce(lambda a,b:a+b,range(1,101)) 3. 使用 ...
- 第十八篇、keychain保存UUID(保持唯一性,应用卸载,下载安装也不变)和获取IP地址
.h #import <Foundation/Foundation.h> #import <Security/Security.h> /**使用**/ //-(void) se ...
- Android--LowMemoryKiller知识点补充
Android在内存管理上与linux有些小的区别.其中一个就是引入了Low memory killer . 1.引入原因: Android是一个多任务系统,也就是说可以同时运行多个程序,这个大家应该 ...
- spring mvc 多视图配置
<!-- jsp视图解析器--> <bean id="viewResolver" class="org.springframework.web.serv ...