找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5028|回复: 3

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

  [复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2010-12-11 17:19:35 | 显示全部楼层 |阅读模式
纯C语言写的(个人不喜欢C++),Code::Blocks编译。

  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <windows.h>
  4. #include <tlhelp32.h>

  5. long TaGetPidByPIN(char *ProcessImageName)
  6. {
  7.     PROCESSENTRY32 procxp= {0};
  8.     HANDLE hsnapshot1=NULL;
  9.     BOOL flags=1;
  10.     int i=0;
  11.     hsnapshot1=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
  12.     procxp.dwSize=sizeof(procxp);
  13.     flags=Process32First(hsnapshot1,&procxp);
  14.     if(!flags) return 0;
  15.     while(flags)
  16.     {
  17.         if(stricmp(ProcessImageName,procxp.szExeFile)==0)
  18.             return procxp.th32ProcessID;
  19.         i++;
  20.         flags=Process32Next(hsnapshot1,&procxp);
  21.     }
  22.     CloseHandle(hsnapshot1);
  23.     return 0;
  24. }

  25. int main()
  26. {
  27.     printf("%ld\n",TaGetPidByPIN("TASKmgr.ExE"));
  28.     printf("%ld\n",TaGetPidByPIN("svcHOST.ExE"));
  29.     return 0;
  30. }

复制代码

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2010-12-11 18:11:52 | 显示全部楼层
学习了,经测试在VC6中测试通过
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

23

主题

117

回帖

1

精华

银牌会员

积分
400
发表于 2010-12-11 20:06:25 | 显示全部楼层
这个。。。。ring0的话,PsGetCurrentProcess得到一个EPROCESS结构体
然后根据活动进程链遍历,一个个对比就是了。。。。貌似没啥意义发表在这里,这种问题

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2010-12-11 23:40:08 | 显示全部楼层
回复 364589886 的帖子

这个帖子是随便发的。。。为了方便有需要的人节省10分钟的编码时间。。。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表