`
yangshen998
  • 浏览: 1249708 次
文章分类
社区版块
存档分类
最新评论

用CreateToolhelp32Snapshot/Process32First/Process32Next API枚举系统进程

 
阅读更多
用CreateToolhelp32Snapshot/Process32First/Process32NextAPI枚举系统进程
在很多情况下需要对系统的进程进行操作,方法有很多种但最常用的是
CreateToolhelp32Snapshot/Process32First/Process32Next 一系列API使现结束进程使用
TerminateProcess使现
下面的函数可以使现对进程的枚举:
int ProcessList()
{
PROCESSENTRY32 pe32;
pe32.dwSize=sizeof(pe32);
int count=0;
HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot调用失败!");
return -1;
}
BOOL bMore=::Process32First(hProcessSnap,&pe32);
printf("%20s/t%10s/n","进程名","PID");
printf("====================================/n");
while(bMore)
{
count++;
printf("%20s/t%10d/n",pe32.szExeFile,pe32.th32ProcessID);
bMore=::Process32Next(hProcessSnap,&pe32);
}
::CloseHandle(hProcessSnap);
printf("====================================/n");
printf("/n当前系统进程数为:%d/n",count);
return 0;
}
结束进程可以使用下面的函数:(使现其中dwid为想要结束的进程ID可通过列进程的函数得到)
int TerminateProcessFromId(DWORD dwId)
{
BOOL bRet=FALSE;
HANDLE hProcess=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwId);
if(hProcess!=NULL)
{
bRet=::TerminateProcess(hProcess,0);
}
::CloseHandle(hProcess);
if(bRet)
printf("%d 进程结束成功....../n/n/n/n",dwId);
else
printf("%d 进程结束失败....../n/n/n/n",dwId);
return 0;
}
与进程相关的操作通常还要提升权限,由关提升权限可以看偶的另一篇笔记《提升进程权限代码.》
由于代码相对比较简单,所以就没有更多的文字说明,关键的函数加了注释,其实使用时直接调用就OK了.
分享到:
评论

相关推荐

    进程暂停工具VBPauseResume的源代码

    1,使用了CreateToolhelp32Snapshot获得进程快照,然后用Process32First和 Process32Next来获得所有进程,从而列出进程列表 2,使用CreateToolhelp32Snapshot,Process32First,Process32Next获得指定的某个进程的...

    易语言枚举隐藏进程

    易语言枚举隐藏进程源码,枚举隐藏进程,枚举进程,提升进程权限,隐藏进程,取进程EProcess,十六文本至长整数,读物理内存,写物理内存,CreateToolhelp32Snapshot,Process32First,Process32Next,CloseHandle,OpenProcess,...

    枚举进程DLL

    使用 CreateToolhelp32Snapshot 创建进程快照,第一个参数为 TH32CS_SNAPMODULE 时创建进程 DLL 快照,类似枚举进程时使用的 Process32First、Process32Next,枚举进程 DLL 时使用 Module32First、Module32Next 枚举...

    易语言枚举进程PID

    易语言枚举进程PID源码,枚举进程PID,子程序_枚举进程,子程序_取窗口句柄,EnumWindowsProc,FindWindowEx,GetWindowText,GetClassName,CreateToolhelp32Snapshot,Process32First,Process32Next,CloseHandle,...

    获取当前进程的列表

    if(Process32First(handle,info))//开始枚举进程 { if(GetLastError()==ERROR_NO_MORE_FILES ) { AfxMessageBox("No More Process"); } else { CString id; id.Format("%d",info->th32ProcessID);//获取...

    易语言进程命令行

    易语言进程命令行源码,进程命令行,计算偏移,枚举进程,检测进程,取进程命令行,CreateToolhelp32Snapshot,Process32First,Process32Next,CloseHandle

    vc获取进程名和PID的程序源码

    关键函数 CreateToolhelp32Snapshot Process32First Process32Next

    VC 6.0枚举EXE文件路径.rar

      hModule=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pinfo->th32ProcessID);   Module32First(hModule, minfo);   GetShortPathName(minfo->szExePath,shortpath,256);   printf("%s --- %s\n",pinfo->...

    易语言查看系统进程

    易语言查看系统进程源码,查看系统进程,系统_枚举系统内存使用情况,子程序_显示内存,GlobalSize_内存,OpenProcess_,CreateToolhelp32Snapshot_,CloseHandle_,Process32First_,Process32Next_,GetProcessMemoryInfo_,...

    易语言main源码,易语言某相应程序源码,易语言程序被关闭处理

    易语言程序被关闭处理源码,程序被关闭处理,进程枚举返回数组,进程是否存在判断,CreateToolhelp32Snapshot,Process32First,Process32Next,CloseHandle,GetCurrentProcessId,结束相应窗口程序,销毁窗口,timewait,...

    易语言关闭冰刃

    易语言关闭冰刃源码,关闭冰刃,消息处理,枚举窗口,进程名取PID,枚举线程,PostMessage,EnumThreadWindows,FindWindowEx,CreateToolhelp32Snapshot,CloseHandle,Process32First,Process32Next,FindWindow,Thread32Next,...

    补丁模块(带源码)InlinePatch,Hook,内存DLL注入等等

    参数 进程信息结构体, PROCESS_INFORMATION, 参考 可空, 可空,PROCESS_INFORMATION,返回进程信息结构体,方便写补丁函数;这个属于高级功能,看不懂的话就留空吧 .子程序 OpenProcessPro, 整数型, 公开, 返回句柄权限...

Global site tag (gtag.js) - Google Analytics