问题描述
- 枚举进程的具体详细的代码
-
新手上路,想知道c++的枚举电脑进程的具体代码是什么,分别要建立几个源文件和头文件。
解决方案
调用CreateToolhelp32Snapshot就可以了。
话说你关注的问题不对。你应该问用什么函数,用什么方法,然后告诉你 api 函数名,你去 google 找代码。
你却问几个源代码文件,这毫不重要。
就好比你做数学题,你应该问用什么定理用什么公式。而不是问需要几张草稿纸,需要写多少行。
解决方案二:
主要使用的下面几个函数:
1、CreateToolhelp32Snapshot
2、Process32First
3、Process32Next
所以要引用下面的头文件:
[cpp] view plaincopyprint?
#include
枚举进程的代码如下:
[cpp] view plaincopyprint?
// 枚举系统当前所有进程信息
// 并把信息输出到工程目录下EnumInfo_ToolHelp_process.txt
BOOL EnumProcessInfo()
{
// 定义进程信息结构
PROCESSENTRY32 pe32 = {sizeof(pe32)} ;
// 创建系统当前进程快照
HANDLE hProcessShot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 ) ;
if ( hProcessShot == INVALID_HANDLE_VALUE )
return FALSE ;
// 输出进程信息到文件
ofstream fout ( "EnumInfo_ToolHelp_process.txt" ) ;
// 循环枚举进程信息
char szBuf[MAX_BUF_SIZE] = {0} ;
if ( Process32First ( hProcessShot, &pe32 ) )
{
do {
memset ( szBuf, 0, sizeof(szBuf) ) ;
// 把宽字符的进程名转化为ANSI字符串
WideCharToMultiByte (CP_ACP, 0, pe32.szExeFile, wcslen(pe32.szExeFile), szBuf, sizeof(szBuf), NULL, NULL );
fout << "Process: " << szBuf << endl ;
fout << 't' << "Usage : " << pe32.cntUsage << endl ;
fout << 't' << "ProcessID : " << pe32.th32ProcessID << endl ;
fout << 't' << "DefaultHeapID : " << (ULONG_PTR)pe32.th32DefaultHeapID << endl ;
fout << 't' << "ModuleID : " << pe32.th32ModuleID << endl ;
fout << 't' << "ThreadNum : " << pe32.cntThreads << endl ;
fout << 't' << "ParentProcessID : " << pe32.th32ParentProcessID << endl ;
fout << 't' << "PriClassBase : " << pe32.pcPriClassBase << endl ;
}while ( Process32Next ( hProcessShot, &pe32 ) ) ;
}
fout.close () ;
CloseHandle ( hProcessShot ) ;
return TRUE ;
}
解决方案三:
C++,啥系统呢?C++ 不具备这样的功能,一般是系统提供的 API 才有这样的功能。
如果是 Windows 平台,可以考虑:
如何用 Win32 APIs 枚举应用程序窗口和进程
解决方案四:
可参考以下链接
http://blog.csdn.net/zhongbin104/article/details/7867309
解决方案五:
我是进来学习一下的,一个头文件一个源文件估计就行
解决方案六:
可以用就行了吧,就是调用API而已
解决方案七:
Windows上有api,Process32Frist Process32Next
时间: 2024-08-02 11:28:41