59.获取进行模块列表

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

内容参考于:易道云信息技术研究院

上一个内容:58.模块列表界面

以 58.模块列表界面 它的代码为基础进行修改

效果图:

CWndINC.h文件的修改:

void SetProcess(unsigned Pid, CString& wExe, bool bFirst = false);

CWndModuleList.h文件的修改:

void GetModList(DWORD Pid);

CWndModuleList.cpp文件的修改:

#include <TlHelp32.h>
void CWndModuleList::GetModList(DWORD Pid)
{
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, Pid);
    if (hSnap != INVALID_HANDLE_VALUE) {
        MODULEENTRY32 modl{ sizeof(MODULEENTRY32) };
        BOOL BMORD = Module32First(hSnap, &modl);
        while (BMORD) {
            CString txt;
            txt.Format(L"%X", modl.hModule);
            LstModule.InsertItem(0, modl.szModule);
            LstModule.SetItemText(0, 1, txt);
            txt.Format(L"%X", modl.modBaseSize);
            LstModule.SetItemText(0, 2, txt);
            LstModule.SetItemText(0, 3, modl.szExePath);

            BMORD = Module32Next(hSnap, &modl);
        }
    }
    CloseHandle(hSnap);
}

CWndINC.cpp文件的修改:

void CWndINC::SetProcess(unsigned Pid, CString& wExe, bool bFirst)
{
    if (bFirst) {
        UExe = wExe;
        modPage[0].GetModList(Pid);
    }else {
        UExeRoot = wExe;
        modPage[1].GetModList(Pid);
    }
    
    UpdateData(FALSE);
}

void CWndINC::OnSize(UINT nType, int cx, int cy)
{
    CDialogEx::OnSize(nType, cx, cy);

    // TODO: 在此处添加消息处理程序代码
    CDialogEx::OnSize(nType, cx, cy);

    if (nType == 1 || !mTab)return;
    CRect rect;
    GetClientRect(&rect);

    rect.top += 00;
    rect.left += 0;
    rect.bottom -= 130;
    rect.right -= 50;

    for (int i = 0; i < CurPage; i++) {
        if (Pages[i]) {
            Pages[i]->MoveWindow(&rect);
        }
    }
}

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值