请问一下为什么我无法通过代码更改这个对话框的编辑框的内容?
mfc吧
全部回复
仅看楼主
level 11
94381Hlg 楼主
我获取了编辑框的句柄,却无法更改或者获取其内容,拜托大神告诉小弟下!
2016年04月20日 18点04分 1
level 11
94381Hlg 楼主
我醉了,已经传了附件,怎么没显示了。
2016年04月20日 19点04分 2
level 10
首先,你调试的时候,确定那个句柄不是空?第二,句柄不为空。你确定是编辑框的句柄吗?第三。句柄不行你直接用ID不就行了?
2016年04月21日 00点04分 3
因为这个对话框是外部EXE程序,所以我不知道ID。。然后每个我都是用SPY++找的,然后判断了是否为空,用同样的方法,我能更改对话框的标题,却改不了他编辑框的内容,好久没用过MFC了,我也很疑惑,特此来请教[乖]
2016年04月21日 01点04分
@94381Hlg 请问你成功了么。。。
2016年04月21日 01点04分
@94381Hlg 你是用sendmessage函数发送settext消息吗?
2016年04月21日 01点04分
@94381Hlg 我以前做的时候可以啊。不过有些是不行的,比如qq登陆界面,那个根本不是编辑框,是自绘的控件。
2016年04月21日 01点04分
level 11
94381Hlg 楼主
2016年04月21日 02点04分 4
level 11
94381Hlg 楼主
[不高兴][不高兴][不高兴]
2016年04月21日 03点04分 5
我建议你用sendmessage函数来设置和获取文本。你试过没?
2016年04月21日 04点04分
level 14
[汗]
2016年04月21日 04点04分 6
level 10
//获取父窗口句柄
HWND hFindParent = ::FindWindow(nullptr, L"test.txt - 记事本");
if (hFindParent)
{
//获取子窗口句柄
HWND hFindEdit = ::FindWindowEx(hFindParent, nullptr, L"Edit", nullptr);
if (hFindEdit)
{
TCHAR szBuffer[1024] = L"TEST";
//发送
::SendMessage(hFindEdit, WM_SETTEXT, 1024, (LPARAM)szBuffer);
//获取
::SendMessage(hFindEdit, WM_GETTEXT, 1024, (LPARAM)szBuffer);
//获得句柄后可以有多种方法获取设置文本。
AfxMessageBox(szBuffer);
}
}
2016年04月21日 05点04分 7
1