Tesla.Angela 发表于 2010-12-11 17:19:35

[半原创]通过进程名得到进程ID

纯C语言写的(个人不喜欢C++),Code::Blocks编译。

#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <tlhelp32.h>

long TaGetPidByPIN(char *ProcessImageName)
{
    PROCESSENTRY32 procxp= {0};
    HANDLE hsnapshot1=NULL;
    BOOL flags=1;
    int i=0;
    hsnapshot1=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
    procxp.dwSize=sizeof(procxp);
    flags=Process32First(hsnapshot1,&procxp);
    if(!flags) return 0;
    while(flags)
    {
      if(stricmp(ProcessImageName,procxp.szExeFile)==0)
            return procxp.th32ProcessID;
      i++;
      flags=Process32Next(hsnapshot1,&procxp);
    }
    CloseHandle(hsnapshot1);
    return 0;
}

int main()
{
    printf("%ld\n",TaGetPidByPIN("TASKmgr.ExE"));
    printf("%ld\n",TaGetPidByPIN("svcHOST.ExE"));
    return 0;
}


阿杰 发表于 2010-12-11 18:11:52

学习了,经测试在VC6中测试通过

364589886 发表于 2010-12-11 20:06:25

这个。。。。ring0的话,PsGetCurrentProcess得到一个EPROCESS结构体
然后根据活动进程链遍历,一个个对比就是了。。。。貌似没啥意义发表在这里,这种问题

Tesla.Angela 发表于 2010-12-11 23:40:08

回复 364589886 的帖子

这个帖子是随便发的。。。为了方便有需要的人节省10分钟的编码时间。。。
页: [1]
查看完整版本: [半原创]通过进程名得到进程ID