一个有点难度的问题 某个应用程序A,可以弹出一个带有编辑框E的对话框。而这个编辑框E只能显示文字,其选择、复制、修改等功能全部被屏蔽。但是我想把编辑框E中的文本复制下来,该怎么办?能够不用编程来实现是最好的,但是,如果必须编程的话,那么又该怎么来实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 得到编辑框句柄,GetWindowText() 可以继承点击鼠标右键消息,弹出自定义采单,采单上加入copy 我用两千试了以下,好象不能用GetWindowText(独立于本程序),不知能不能用类似屏幕取词的方法。 取得编辑框E的句柄,然后GetWindowText().取得编辑框E,用EnumChildWindow试试。 //将客户坐标转换成屏幕坐标 ClientToScreen(&point); //返回一个包含指定屏幕坐标点的窗口 CWnd* pWnd = CWnd::WindowFromPoint(point); if (pWnd) { //获取窗口句柄 HWND hwndCurr = pWnd->GetSafeHwnd(); if ((::GetWindowThreadProcessId (GetSafeHwnd(), NULL)) != (::GetWindowThreadProcessId (hwndCurr, NULL))) { char lpClassName[255]; //获取类名 if (::GetClassName(hwndCurr, lpClassName, 255)) { //判断是否是Edit控件 if (0 == m_strWndClass.CompareNoCase("EDIT")) { char szText[255]; //通过掌握的句柄hwndCurr向此控件发送WM_GETTEXT消息 ::SendMessage(hwndCurr, WM_GETTEXT, 255, (LPARAM)szText); //密码已保存在szText中 m_strPassword = szText; } } } } 感谢wistaria(听风听雨)的详细解答那么,如果我要获取的是多行文本该怎么办呢? 还有,就是我该怎样获取鼠标的位置呢?也就是说,point从何而来。 可以这样试一下以下两种方法:1、在NT或者2000下(98不行),用vc打开这个应用程序A的可执行程序,打开方式选为resources;然后找到你说的那个对话框,看一看那个编辑控件是不是disabled的,如果是,把它改为enable,然后保存即可。如果在可执行程序中找不到这个对话框,就在别的dll或者exe文件中找一找。2、运行那个应用程序,弹出那个对话框,看看它的标题。自己写一个程序,用CWnd *pWnd=FindWindow(NULL,标题);就能得到窗口的指针,然后再调用pWnd->GetDlgItem->getwindowtext即可。 请教关于串口通信中的“协议封装”的问题 十万火急,关于键盘模拟输入的问题!!!!! 我使用CHtmlView做浏览器,安Shift键弹出窗口,session就清了,怎么保留, rand()函数 一分钟能产生多少个随机数据? 有没有人测过 是不是在职的必须要单位的介绍信才能考研?谢谢! 控件位置问题?? activex 无法在本地机器的网页中显示 想显示一个16位图像 谁有《OpenGL 编程与实例》的源代码? 怎样用TAPI识别对方的按键信号 32 位,位图是如何存放数据的????多谢 vector的构造
取得编辑框E,用EnumChildWindow试试。
ClientToScreen(&point);
//返回一个包含指定屏幕坐标点的窗口
CWnd* pWnd = CWnd::WindowFromPoint(point);
if (pWnd)
{
//获取窗口句柄
HWND hwndCurr = pWnd->GetSafeHwnd();
if ((::GetWindowThreadProcessId (GetSafeHwnd(), NULL)) != (::GetWindowThreadProcessId (hwndCurr, NULL)))
{
char lpClassName[255];
//获取类名
if (::GetClassName(hwndCurr, lpClassName, 255))
{
//判断是否是Edit控件
if (0 == m_strWndClass.CompareNoCase("EDIT"))
{
char szText[255];
//通过掌握的句柄hwndCurr向此控件发送WM_GETTEXT消息
::SendMessage(hwndCurr, WM_GETTEXT, 255, (LPARAM)szText); //密码已保存在szText中
m_strPassword = szText; }
}
}
}
那么,如果我要获取的是多行文本该怎么办呢?
也就是说,point从何而来。
1、在NT或者2000下(98不行),用vc打开这个应用程序A的可执行程序,打开方式选为resources;然后找到你说的那个对话框,看一看那个编辑控件是不是disabled的,如果是,把它改为enable,然后保存即可。如果在可执行程序中找不到这个对话框,就在别的dll或者exe文件中找一找。2、运行那个应用程序,弹出那个对话框,看看它的标题。自己写一个程序,
用CWnd *pWnd=FindWindow(NULL,标题);就能得到窗口的指针,然后再调用
pWnd->GetDlgItem->getwindowtext即可。