windows_31_ProcBase 进程基础
// windows_31_ProcBase.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <psapi.h> //另一块进程操作API
void ProcModule( )
{
printf( "All Modules:\n" );
//当前进程句柄
HANDLE hProc = GetCurrentProcess( );
//获取模块句柄
HMODULE hModules[256] = { 0 };
DWORD nNeed = 0;
EnumProcessModules( hProc,hModules,256,&nNeed);
//计算获取到句柄数量
DWORD nCount = nNeed / sizeof( HMODULE );
//打印句柄
for (DWORD nIndex = 0; nIndex < nCount;nIndex++)
{
//获取各模块所对应的文件名和路径
CHAR szPath[MAX_PATH] = { 0 };
GetModuleFileNameEx( hProc, hModules[nIndex], szPath, MAX_PATH );
printf( "\t%d: %p, %s\n", nIndex + 1, hModules[nIndex] ,szPath);
}
}
void ProcInfo( )
{
//获取进程ID
DWORD nID = GetCurrentProcessId( );
//获取进程句柄(-1,伪句柄)
HANDLE hProc = GetCurrentProcess( );
printf( "Process ID: %d\n", nID );
printf( "Process Handle: %p\n", hProc );
//根据进程ID获取进程实际句柄
hProc = OpenProcess( PROCESS_ALL_ACCESS, FALSE, nID );
printf( "Process Handle: %p\n", hProc );
}
int _tmain(int argc, _TCHAR* argv[])
{
ProcInfo( );
ProcModule( );
return 0;
}
时间: 2024-10-09 07:56:16