如何获得其他程序的EDIT控件中的内容并修改

本文探讨了通过编程手段获取其他程序中EDIT控件内容的方法,指出了直接使用GetWindowText函数的局限性,并给出了一种利用SendMessage函数发送WM_GETTEXT命令的成功解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

zzz如何获得其他程序的EDIT控件中的内容呢?第一个想法就是使用GetWindowText函数,设定其内容的话就是SetWindowText函数,其实不对,这两个函数对于其他的控件都能够正常工作,唯独对于EDIT控件不行,我在这边困惑了好久,甚至想去逆向一下程序,看看到底有没有发送WM_GETTEXT命令和WM_SETTEXT命令了,幸好有google。。。省却一番功夫。贴一段不能成功的代码
ContractedBlock.gifExpandedBlockStart.gifCode
#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命令,具体的程序还没有试,今天有点累了,明天试了再贴上来:)

转载于:https://www.cnblogs.com/feiyucq/archive/2009/07/28/1533156.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值