VB获取外部窗口控件句柄的文本

 我来答
北美6609
推荐于2016-08-08 · TA获得超过104个赞
知道答主
回答量:114
采纳率:75%
帮助的人:58.4万
展开全部
通过句柄 获得类里面的信息 就获得了文本了 追问: 那给个源码参考下,谢谢 回答: zzz如何获得其他程序的EDIT控件中的内容呢?第一个想法就是使用GetWindowText函数,设定其内容的话就是SetWindowText函数,其实不对,这两个函数对于其他的控件都能够正常工作,唯独对于EDIT控件不行,我在这边困惑了好久,甚至想去逆向一下程序,看看到底有没有发送WM_GETTEXT命令和WM_SETTEXT命令了,幸好有google。省却一番功夫。贴一段不能成功的代码 Code #include <windows.h> BOOL CALLBACK EnumChildProc(HWND hWnd,LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){char className[]="notepad"; //HWND hWnd=::FindWindow(className,NULL); HWND hWnd=::FindWindow(NULL,"夏娃");if(hWnd){::EnumChildWindows(hWnd,EnumChildProc,0);return 0;}MessageBox(NULL,"fail!","fail",MB_OK);return 0;}BOOL CALLBACK EnumChildProc(HWND hWnd,LPARAM lParam){char temp1[256],temp2[256],temp3[256]; ::GetClassName(hWnd,temp1,255); ::GetWindowText(hWnd,temp2,255); ::wsprintf(temp3,"classname: %s windowtext: %s",temp1,temp2); ::MessageBox(NULL,temp3,"cwnd",MB_OK); return true;}/*BOOL CALLBACK EnumChildProc(HWND hWnd,LPARAM lParam){char temp1[256],temp2[256]; ::GetClassName(hWnd,temp1,255); if(!::strcmp(temp1,"Edit")){MessageBox(NULL,"Edit","cwnd",MB_OK); //使用sendmessage ::strncpy(temp1,"fuck",5); ::SendMessage(hWnd,WM_SETTEXT,0,(LPARAM)temp1);return 0;}::wsprintf(temp2,"classname: %s",temp1); MessageBox(NULL,temp2,"cwnd",MB_OK); return true; }*/黑色部分的程序永远也不会获得EDIT中的内容,对于SetWindowText也是一样的 被注释掉的部分是能够成功的代码,调用了SendMessage函数发送WM_SETTEXT命令到目标程序中,成功了,如果想要获取目标EDIT中的内容的话则需要发送WM_GETTEXT命令,具体的程序还没有试, 追问: VB代码!———— 回答: 晕死 我替你拿老板工资得了 不会读懂意思吗 这样你还怎么学习进步呀不说 追问: 我只是随便做个软件!老板!我也不是工具!我是说你能个给VB的代码吗,这不是C语言的代码吗,我没学过 回答: 我不懂VB 但是我给你思路了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式