进程代码:打印所有进程的程序实现代码



//此在VC6.0和Dev-C下编译通过
#<windows.h>
#<tlhelp32.h>
#<stdio.h>
#<tchar.h>
#\"psapi.h\"//这个是系统文件
#pragmacomment(lib,\"psapi.lib\")
//这个是系统库文件般windows下面有如果没有去下载
ListProcess
{
HANDLEhProcessSnap=NULL;//Windows中句柄HANDLE来的于<windows.h>
PROCESSENTRY32pe32={0};//<tlhelp32.h>
/*
typedefstructtagPROCESSENTRY32{
DWORDdwSize;//结构大小;
DWORDcntUsage;//此进程引用计数;
DWORDth32ProcessID;//进程ID;
DWORDth32DefaultHeapID;//进程默认堆ID;
DWORDth32ModuleID;//进程模块ID;
DWORDcntThreads;//此进程开启线程计数;
DWORDth32ParentProcessID;//父进程ID;
LONGpcPriClassBase;//线程优先权;
DWORDdwFlags;//保留;
charszExeFile[MAX_PATH];//进程全名;
}PROCESSENTRY32;
typedefPROCESSENTRY32*PPROCESSENTRY32;
typedefPROCESSENTRY32*LPPROCESSENTRY32;
*/
totalProcess=0;
BOOLbRet=FALSE;
hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
//利用CreateToolhelp32Snapshot获得当前运行进程快照
/*
HANDLEWINAPICreateToolhelp32Snapshot(
DWORDdwFlags,//由CreateToolhelp32Snapshot返回系统快照句柄;
DWORDth32ProcessID//进程ID,指向个PROCESSENTRY32结构;
);
Returnsanopenhandletothespeciedsnapshotsuccessfulor–1otherwise.
*/
(hProcessSnapINVALID_HANDLE_VALUE)
FALSE;
pe32.dwSize=(PROCESSENTRY32);
(Process32First(hProcessSnap,&pe32))//Process32First获得进程快照
{
_tprf(TEXT(\"\\rProcess\\t\\tPRIV\\tPID\\tTHREADS\\t\\tPATH\\n\\n\"));//<tchar.h>
do
{
HMODULEhModule;//表示当前进程主模块句柄
//HMODULE和HINSTANCE是等价,只是在16位时期代表区别意思,如今可以用HINSTANCE代替. [Page]
TCHARszPath[MAX_PATH];
DWORDcbNeeded;
HANDLEhProcess=NULL;
hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,pe32.th32ProcessID);
//通过进程PID获得句柄
/*
HANDLEOpenProcess(
DWORDdwDesiredAccess,//accessflag
BOOLbInheritHandle,//handleinheritanceflag
DWORDdwProcessId//processidentier
);
PROCESS_QUERY_INFORMATION
EnablesusingtheprocesshandleheGetExitCodeProcess
andGetPriorityClassfunctionstoreadinformationfromtheprocessobject.
PROCESS_ALL_ACCESS:关键是显示非系统进程路径
PROCESS_QUERY_INFORMATION:显示所有进程路径
*/
EnumProcessModules(hProcess,&hModule,(HMODULE),&cbNeeded);
//EnumProcessModules可以得到所有模块
/*
BOOLEnumProcessModules(
HANDLEhProcess,//handletotheprocess
HMODULE*lphModule,//.gif' />toreceivethemodulehandles
DWORDcb,//the.gif' />
LPDWORDlpcbNeeded//receivesthenumberofsed
);
*/
GetModuleFileNameEx(hProcess,hModule,szPath,(szPath));
//GetModuleFileNameEx这个获取所有进程全路径
_tprf(TEXT(\"\\r%-17s%-8d%-8d%-17d%s\\n\"),


pe32.szExeFile,//进程全名;
pe32.pcPriClassBase,//线程优先权;
pe32.th32ProcessID,//进程ID;
pe32.cntThreads,//此进程开启线程计数; [Page]
szPath//进程全路径
);
//ListModules(pe32.th32ProcessID);
prf(\"memory:\\n\");//使用内存
PROCESS_MEMORY_COUNTERSmemz;
GetProcessMemoryInfo(hProcess,&memz,(memz));
//(memz.PeakWorkingSetSize/(1024)<1024)
prf(\"peak:%dK\\tcur:%dK\\n\\n\",memz.PeakWorkingSetSize/(1024),memz.WorkingSetSize/1024);
//
//prf(\"peak:%dM\\tcur:%dK\\n\\n\",memz.PeakWorkingSetSize/(1024*1024),memz.WorkingSetSize/1024);
//PeakWorkingSetSize最大使用量
//WorkingSetSize当前使用量
CloseHandle(hProcess);
CloseHandle(hModule);
totalProcess;
}
while(Process32Next(hProcessSnap,&pe32));
}

_tprf(TEXT(\"Process32FirstError\\n\"));
totalProcess;
CloseHandle(hProcessSnap);
totalProcess;
}
(void)
{
_tprf(TEXT(\"\\n总进程数目为:%d\\n\"),ListProcess);
_tprf(TEXT(\"\\n\\n如果看不到进程路径可以在dos下面运行:\\nprocess>1.txt\\n\"));
0;
}

Tags:  qq空间所有代码 结束进程代码 进程隐藏代码 进程代码

延伸阅读

最新评论

发表评论