// windows_31_ProcBase.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <windows.h>#include <psapi.h> //另一块进程操作APIvoid 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( ){//获取进程IDDWORD 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;}
原文:http://www.cnblogs.com/nfking/p/5573564.html