在console(命令行)的方式下,用c的实现:
头文件psapi.h,库psapi.lib
#pragma comment(lib,"psapi.lib") processID用EnumProcesses()得到;
得到process的名字,见以下函数(思路是用pid找到句柄)
void #pragma comment(lib,"psapi.lib") void PrintProcessNameAndID( DWORD processID )
{
char szProcessName[MAX_PATH] = "unknown"; // Get a handle to the process. HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID ); // Get the process name. if ( hProcess )
{
HMODULE hMod;
DWORD cbNeeded; if (EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName,
sizeof(szProcessName) );
}
} // Print the process name and identifier. printf( "%s (Process ID: %u)\n", szProcessName, processID ); CloseHandle( hProcess );
--------------------------------------------------------------------
--------------------------------------------------------------------
但是在mfc中,我把函数PrintProcessNameAndID定义在一个class中,
也连入了psapi.h,psapi.lib,
但是在编译时出错:
error C2065: 'EnumProcessModules' : undeclared identifier
error C2065: 'GetModuleBaseName' : undeclared identifier
想了半天不得其解,希望大家指教,在mfc中如何实现枚举系统进程
头文件psapi.h,库psapi.lib
#pragma comment(lib,"psapi.lib") processID用EnumProcesses()得到;
得到process的名字,见以下函数(思路是用pid找到句柄)
void #pragma comment(lib,"psapi.lib") void PrintProcessNameAndID( DWORD processID )
{
char szProcessName[MAX_PATH] = "unknown"; // Get a handle to the process. HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID ); // Get the process name. if ( hProcess )
{
HMODULE hMod;
DWORD cbNeeded; if (EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName,
sizeof(szProcessName) );
}
} // Print the process name and identifier. printf( "%s (Process ID: %u)\n", szProcessName, processID ); CloseHandle( hProcess );
--------------------------------------------------------------------
--------------------------------------------------------------------
但是在mfc中,我把函数PrintProcessNameAndID定义在一个class中,
也连入了psapi.h,psapi.lib,
但是在编译时出错:
error C2065: 'EnumProcessModules' : undeclared identifier
error C2065: 'GetModuleBaseName' : undeclared identifier
想了半天不得其解,希望大家指教,在mfc中如何实现枚举系统进程
解决方案 »
- 我编程时类视图里怎么突然多了很多以tag 开头的文件??如何去除?
- 如何让串口通讯控件mscomm脱离vc环境?
- 大虾们帮忙看看,程序退出时执行一些动作的问题。急!!!!!!!!
- 如何更改CListCtrl每行的高度?
- 高分请教各位高手:怎样生成COM代理的dll文件?
- extern "C"是什么意思?extern "C" const IID IID_IUnknown =
- 如何在某一个范围显示图片?
- 有没有谁知道用VC如何从IE里获取安装了的个人证书和私钥?
- 怎样在 CFlexGrid 中嵌入 combox?
- 看了这个帖子,我突然想知道,学软件到底是要学习什么呢?
- 我自己定义了一个类CPacket,为什么不能调用里面的函数呢?
- 为什么收不到消息???
HANDLE handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32* information = malloc(sizeof(PROCESSENTRY32));
information->th32ProcessID(进程id号)
information->szExeFile(进程映像名)
通过下面函数得到路径
if( EnumProcessModules( hProcess, &hModule, sizeof(hModule), &dwSize ) )
GetModuleFileNameExA(hProcess,hModule, szFilePatch, MAX_PATH );
WIN98只能使用Process32First Process32Next. #include <tlhelp32.h>