VB获取外部窗口控件句柄的文本
1个回答
展开全部
通过句柄 获得类里面的信息 就获得了文本了 追问: 那给个源码参考下,谢谢 回答: 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 但是我给你思路了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询