怎样用VC像另一个程序的一个TXTBOX写字符串?

dceacho 2009-02-17 11:57:15
你可以先用spy++看一下那个程序,找到那个EDIT控件的ID值(注意你在SPY中看到的数值都是16进制的),然后这么的:

HWND hwnd=::FindWindow(NULL,"Title"); //其中第二个参数是那个程序的标题,一定要写对
if(hwnd)
{
HWND hwnd2=::GetDlgItem(hwnd, 0x1234); //第二个参数就是那个EDIT控件的ID值,把你找到的值代进去
if(hwnd2)
{
char text[250];
::SendMessage(hwnd2,WM_GETTEXT,(WPARAM)250,(LPARAM)text);
}
}

这是我在论坛上找的获取字符串的一个方法,我用spy++瞄准目标TXTBOX得到:
Windows:00010F12
Text:"." //像是一个点
Class:Edit
Style:50110004
Rect:[549,398]-[985,442]436x44
Thread ID:00000A50
Process ID:00001228
这些东西哪一个才是EDIT控件的ID值啊,还有上面只是说过去字符串,我该怎么发?

就像累世QQ的自动发消息一样
...全文
190 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhyttppd 2009-02-18
  • 打赏
  • 举报
回复
你可以直接看spy的源代码。
dceacho 2009-02-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 oyljerry 的回复:]
FindWindow查找的是窗口,你要先拿到窗口再找控件
[/Quote]

窗口句柄是行不通的,不知道拿窗口再找控件该怎么做?最好有代码,我刚学VC,有了思路我还是不会写
VirGhost 2009-02-18
  • 打赏
  • 举报
回复
还有就是可以采用DLL注入的办法,这样可以获得更多更灵活的控制,建议研读 《Windows via C/C++》。
VirGhost 2009-02-18
  • 打赏
  • 举报
回复
HWND hParent = ::FindWindow(NULL, L"Title"); //得到父窗口的句柄
HWND hChild = ::FindWindowEx(hParent, NULL, L"Edit", NULL); //在父窗口中搜索你要找的Edit控件
LPARAM lParam = (LPARAM)L"yepp"; //设置消息参数
::SendMessage(hChild, WM_SETTEXT, 0, lParam); //发送消息

VS2005下测试通过。
另:若父窗口中有多个Edit控件,可以不断调用FindWindowEx()函数找到要修改的Edit,具体可以查看MSDN中FindWindowEx()的用法。
waizqfor 2009-02-17
  • 打赏
  • 举报
回复
帮顶吃饭去!~~
waizqfor 2009-02-17
  • 打赏
  • 举报
回复
帮顶吃饭去!~~
dceacho 2009-02-17
  • 打赏
  • 举报
回复
HWND hwnd=::FindWindow(NULL,"Title"); //其中第二个参数是那个程序的标题,一定要写对

HWND hwnd2=::GetDlgItem(hwnd, 0x1234); //第二个参数就是那个EDIT控件的ID值,把你找到的值代进去
这2行编译的时候提示错误我改了,不知道会不会有什么问题
main()
{
HWND hwnd1;
HWND hwnd2;

hwnd=FindWindow(NULL,"Title");
hwnd2=GetDlgItem(hwnd, 0x1234);
hhyttppd 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wyc7610 的回复:]
既然已经使用了spy为什么不用它直接拿到edit框的窗口句柄?
拿到句柄就可以干你自己想干的事。
[/Quote]

下次运行,这个句柄会变。
wyc761024 2009-02-17
  • 打赏
  • 举报
回复
既然已经使用了spy为什么不用它直接拿到edit框的窗口句柄?
拿到句柄就可以干你自己想干的事。
hhyttppd 2009-02-17
  • 打赏
  • 举报
回复
你用SPY可以找到控件ID的。
而且SPY的窗口标题里显示的内容就是TXTBOX的内容。
oyljerry 2009-02-17
  • 打赏
  • 举报
回复
FindWindow查找的是窗口,你要先拿到窗口再找控件
wzg112 2009-02-17
  • 打赏
  • 举报
回复
没这么用过,有趣!
zhangfeiran100 2009-02-17
  • 打赏
  • 举报
回复
Process ID:00001228
alan001 2009-02-17
  • 打赏
  • 举报
回复
都不是ID值
zjj_zjj 2009-02-17
  • 打赏
  • 举报
回复
sendmessage

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧