制作一个网站的步骤是什么浅析淘宝网站的建设与运营论文
2026/3/12 16:28:27 网站建设 项目流程
制作一个网站的步骤是什么,浅析淘宝网站的建设与运营论文,wordpress好用的插件推荐,小说网站如何建设C 实现支持 32 位和 64 位进程的模块枚举 flyfish 使用 Visual Studio 2022 (VC 2022) 创建 MFC 对话框应用程序 源码下载 支持查找 32位和64位进程#xff08;使用 TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32 同时枚举两种模块#xff09; 输入进程名称#xff08;例如 n…C 实现支持 32 位和 64 位进程的模块枚举flyfish使用 Visual Studio 2022 (VC 2022) 创建 MFC 对话框应用程序源码下载支持查找32位和64位进程使用TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32同时枚举两种模块输入进程名称例如notepad.exe点击“查找进程”按钮在列表控件ListCtrl中显示该进程的所有模块名称、基址、大小、路径1. 资源部分在资源编辑器中添加控件在对话框资源ID 为IDD_GETMODULEBASE_DIALOG中添加以下控件类型IDCaption其他属性Edit ControlIDC_EDIT_PROCESS(空)ButtonIDC_BTN_SEARCH查找进程List ControlIDC_LIST_MODULES(空)View: Report, 加四列见代码StaticIDC_STATIC_TIP输入进程名如 notepad.exe2. GetModuleBaseDlg.h#pragmaonce#includetlhelp32.h#includeafxwin.h#includeafxcmn.hclassCGetModuleBaseDlg:publicCDialogEx{public:CGetModuleBaseDlg(CWnd*pParentnullptr);enum{IDDIDD_GETMODULEBASE_DIALOG};protected:virtualvoidDoDataExchange(CDataExchange*pDX);virtualBOOLOnInitDialog();DECLARE_MESSAGE_MAP()public:afx_msgvoidOnBnClickedBtnSearch();private:DWORDGetProcessIDByName(LPCTSTR lpProcessName);BOOLGetAllModules(DWORD dwPID,CListCtrllistCtrl);CEdit m_editProcess;CButton m_btnSearch;CListCtrl m_listModules;};3. GetModuleBaseDlg.cpp#includepch.h#includeGetModuleBase.h#includeGetModuleBaseDlg.h#includeafxdialogex.h#ifdef_DEBUG#definenewDEBUG_NEW#endifCGetModuleBaseDlg::CGetModuleBaseDlg(CWnd*pParent/*nullptr*/):CDialogEx(IDD_GETMODULEBASE_DIALOG,pParent){}voidCGetModuleBaseDlg::DoDataExchange(CDataExchange*pDX){CDialogEx::DoDataExchange(pDX);DDX_Control(pDX,IDC_EDIT_PROCESS,m_editProcess);DDX_Control(pDX,IDC_BTN_SEARCH,m_btnSearch);DDX_Control(pDX,IDC_LIST_MODULES,m_listModules);}BEGIN_MESSAGE_MAP(CGetModuleBaseDlg,CDialogEx)ON_BN_CLICKED(IDC_BTN_SEARCH,CGetModuleBaseDlg::OnBnClickedBtnSearch)END_MESSAGE_MAP()BOOLCGetModuleBaseDlg::OnInitDialog(){CDialogEx::OnInitDialog();// 设置列表控件为报告视图并添加列m_listModules.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);m_listModules.InsertColumn(0,_T(模块名称),LVCFMT_LEFT,150);m_listModules.InsertColumn(1,_T(基址),LVCFMT_LEFT,120);m_listModules.InsertColumn(2,_T(大小),LVCFMT_LEFT,100);m_listModules.InsertColumn(3,_T(路径),LVCFMT_LEFT,400);returnTRUE;}// 根据进程名获取 PID支持大小写不敏感DWORDCGetModuleBaseDlg::GetProcessIDByName(LPCTSTR lpProcessName){DWORD dwPID0;HANDLE hSnapshotCreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);if(hSnapshotINVALID_HANDLE_VALUE)return0;PROCESSENTRY32 pe32{sizeof(pe32)};if(Process32First(hSnapshot,pe32)){do{if(_tcsicmp(pe32.szExeFile,lpProcessName)0)// 不区分大小写{dwPIDpe32.th32ProcessID;break;}}while(Process32Next(hSnapshot,pe32));}CloseHandle(hSnapshot);returndwPID;}// 枚举指定进程的所有模块同时支持 32/64 位模块BOOLCGetModuleBaseDlg::GetAllModules(DWORD dwPID,CListCtrllistCtrl){listCtrl.DeleteAllItems();// 同时使用 TH32CS_SNAPMODULE 和 TH32CS_SNAPMODULE32 可兼容 WOW64 进程的 32 位模块HANDLE hSnapshotCreateToolhelp32Snapshot(TH32CS_SNAPMODULE|TH32CS_SNAPMODULE32,dwPID);if(hSnapshotINVALID_HANDLE_VALUE)returnFALSE;MODULEENTRY32 me32{sizeof(me32)};if(Module32First(hSnapshot,me32)){intnItem0;do{CString strBase,strSize;strBase.Format(_T(0x%016I64X),(ULONGLONG)me32.modBaseAddr);strSize.Format(_T(0x%08X),me32.modBaseSize);listCtrl.InsertItem(nItem,me32.szModule);listCtrl.SetItemText(nItem,1,strBase);listCtrl.SetItemText(nItem,2,strSize);listCtrl.SetItemText(nItem,3,me32.szExePath);nItem;}while(Module32Next(hSnapshot,me32));}CloseHandle(hSnapshot);returnTRUE;}voidCGetModuleBaseDlg::OnBnClickedBtnSearch(){CString strProcessName;m_editProcess.GetWindowText(strProcessName);strProcessName.Trim();if(strProcessName.IsEmpty()){AfxMessageBox(_T(请输入进程名称));return;}DWORD dwPIDGetProcessIDByName(strProcessName);if(dwPID0){AfxMessageBox(_T(未找到指定进程请确认进程名称正确包含.exe且进程正在运行。));m_listModules.DeleteAllItems();return;}CString strTitle;strTitle.Format(_T(进程 %s (PID: %u) 的模块列表),strProcessName,dwPID);SetWindowText(strTitle);if(!GetAllModules(dwPID,m_listModules)){AfxMessageBox(_T(枚举模块失败可能没有足够权限。));m_listModules.DeleteAllItems();}}4. 项目配置VS2022项目使用Unicode字符集。使用 MFC项目属性 → 常规 → 使用 MFC → “在共享 DLL 中使用 MFC” 或 “在静态库中使用 MFC”。使用方法运行程序在编辑框输入进程可执行文件名例如notepad.exe、chrome.exe点击“查找进程”列表中会显示该进程加载的所有模块包括主模块和 DLL这样就完整实现了你要求的功能支持 32 位和 64 位进程的模块枚举。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询