简介本文向大家介绍一个C++实战项目:C++制作一个简单的程序依赖DLL打包工具,有时候我们需要对某个程序进行打包,却不知道该程序依赖哪些动态库,这个工具可实现程序的一键打包功能,具有一定的C++实战价值,感兴趣的朋友可以参考一下。
有时候我们需要对某个程序进行打包,却不知道该程序依赖哪些动态库,特意制作一个工具可实现程序的一键打包功能。
/*************************************
* 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);
}
本文向大家介绍一个C++实战项目:基于Duilib的CEF3中C++与JS函数互相调用示例,主要涉及开发技术点为DuiLib界面开发、谷歌浏览器CEF插件开发、C++与JavaScript的相互调用,具有一定的C++实战价值,感兴趣的朋友可以参考一下。
OpenMP是一种用于共享内存并行系统的多线程程序设计方案,本文向大家介绍C++并行计算之OpenMP快速入门,感兴趣的朋友可以参考一下。
一般好的软件程序是不应该占用太多CPU时间和内存空间的,一般在自己的学习过程中,我们常常忽略这一点,虽然功能实现没有问题,但是程序占用太多CPU时间,这在实际开发中是不允许的,一个好的程序员也应该注意这个问题。本文就CPU使用率问题做一些简单介绍,为开发稳定健壮的程序提供参考。
本文向大家介绍一个C++实战项目:C++实现MD5、DES加密,主要涉及MD5加密、DES加解密算法,具有一定的C++实战价值,感兴趣的朋友可以参考一下。
本文向大家介绍一个C++实战项目:C++11实现多线程下载操作类,很多时候我们需要同时在网络上下载文件,那么就需要一个类来管理多线程下载,提高下载速度,具有一定的C++实战价值,感兴趣的朋友可以参考一下。
本文向大家介绍一个C++实战项目:C++程序崩溃生成Dump文件。在程序运行时候崩溃是头疼的时,本实战项目可在程序运行崩溃时在程序目录下生成Dump文件,具有一定的C++实战价值,感兴趣的朋友可以参考一下。