C++制作一个简单的程序依赖DLL打包工具

2023-03-06 15:37:40 2241人已围观 17已点赞 8人已收藏

简介本文向大家介绍一个C++实战项目:C++制作一个简单的程序依赖DLL打包工具,有时候我们需要对某个程序进行打包,却不知道该程序依赖哪些动态库,这个工具可实现程序的一键打包功能,具有一定的C++实战价值,感兴趣的朋友可以参考一下。

前言

有时候我们需要对某个程序进行打包,却不知道该程序依赖哪些动态库,特意制作一个工具可实现程序的一键打包功能。

示例程序

C++实战项目,C++基于WMI获取硬盘和BIOS序列号

C++实战项目,C++基于WMI获取硬盘和BIOS序列号

C++实战项目,C++基于WMI获取硬盘和BIOS序列号

核心代码

/*************************************
* VOID ListProcessModules( DWORD dwPID )
* 功能	调用Module32First和Module32Next函数
*		列举和显示进程加载的模块
*
* 参数	DWORD dwPID	进程PID
**************************************/
void CMainDlg::ListProcessModules(DWORD dwPID)
{
	m_dllList.SetRedraw(FALSE);
	m_dllList.DeleteAllItems();
	// 获取模块信息
	MODULEENTRY32 me32;
	HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
	hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
	if (hModuleSnap == INVALID_HANDLE_VALUE)
	{
		//AfxMessageBox(_T("CreateToolhelp32Snapshot (of modules)"));
	}
	// 设置输入参数,结构的大小
	me32.dwSize = sizeof(MODULEENTRY32);
	// 开始获取模块信息
	if (!Module32First(hModuleSnap, &me32))
	{
		//AfxMessageBox(_T("Module32First!"));// Show cause of failure
		CloseHandle(hModuleSnap);     // Must clean up the snapshot object!
		//return;
	}
	int i = 1;
	do
	{
		//打印信息
		m_dllList.InsertItem(i - 1, IntToCString(i, 0));		//插入一行,每行的第一列是序号
		m_dllList.SetItemText(i - 1, 1, me32.szModule);
		m_dllList.SetItemText(i - 1, 2, me32.szExePath);
		//m_dllList.SetItemText(i - 1, 3, IntToCString(me32.modBaseSize / 1024, 0) + _T(" KB"));;
		i++;
	} while (Module32Next(hModuleSnap, &me32));
	CloseHandle(hModuleSnap);	// 关闭句柄
	m_dllList.SetRedraw(TRUE);
}


源码下载
  • 最近更新:   2022-06-21开发环境:   Visual Studio 2015
  • 源码大小:   1.59MB下载次数:  29 

更多为你推荐