如何修改并读取StatusBar的内容

找了好久才解决这个问题,直接sendmessage不好使,必须读写内存才可以!   

DWORD   dwProcessID;

    HANDLE   hProcess;
    LPVOID   lpCommon;
    int   nAllocSize   =   255;
    int   nPnlLen;
    char   szBuf[255];
    DWORD   dwBytesRead;

    HWND hStatusBar=(HWND)0x001C10FC;

    //   StatusBar的项目数(列数)
    int   nPnlCount   = ::SendMessage(hStatusBar,   SB_GETPARTS,   0,   0);

    //   hStatusBar是状态栏窗口句柄
    GetWindowThreadProcessId(hStatusBar,   &dwProcessID);
    //
    hProcess   =   OpenProcess(PROCESS_VM_OPERATION   |   PROCESS_VM_READ   | PROCESS_VM_WRITE,   false,   dwProcessID);
    lpCommon   =   VirtualAllocEx(hProcess,   NULL,   nAllocSize,MEM_RESERVE   |   MEM_COMMIT,   PAGE_READWRITE);

   

   //修改StatusBar中栏目的内容

    DWORD dwNumberOfBytesRead;
    char* ttt="蝴蝶飞飞";
    WriteProcessMemory(hProcess, lpCommon,ttt,_tcslen(ttt),&dwNumberOfBytesRead);
    ::SendMessage (hStatusBar, SB_SETTEXTA, 2,(LPARAM)lpCommon);

    //   循环读取每一个StatusBar项目
    for(int   i=0;   i <nPnlCount;   i++)
    {
        ::SendMessage(hStatusBar,   SB_GETTEXT,   i,   LPARAM(lpCommon));
        ReadProcessMemory(hProcess,   lpCommon,   szBuf,   255,   &dwBytesRead);
        //   文本内容在szBuf中
        //   再这里作处理,可以将szBuf保存到一个列表中,自己看着办        
    }
    VirtualFreeEx(hProcess,   lpCommon,   0,   MEM_RELEASE);
    CloseHandle(hProcess);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值