首页
社区
课程
招聘
[求助]写一个能显示本机所有进程的PID,各进程所使用的端口,用什么函数来实现?
发表于: 2007-3-28 08:48 5039

[求助]写一个能显示本机所有进程的PID,各进程所使用的端口,用什么函数来实现?

2007-3-28 08:48
5039
本人想用VC来写一个能显示本机所有进程的PID,各进程所使用的端口

请问用哪些函数实现上述功能???请高手指教.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 214
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <psapi.h> //+ libpsapi.a
#include <limits.h>

int main(int argc, char *argv[])
{
  char Path[MAX_PATH]; //放路径的
  DWORD Process[1024],ProcessCount,Needed;//进程ID 和 进程数量
  HMODULE hModule; //取模块
  int i;
  EnumProcesses(Process,sizeof(Process),&Needed);//枚举进程
  ProcessCount = Needed / sizeof(DWORD); //进程数量
   
   for (i=0;i<ProcessCount;i++) //没 什么 说 的  
   {
       //打开进程 用查询和读取标志
       HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,Process[i]);
       //取模块第一个路径 一般都是EXE的路径
       EnumProcessModules(hProcess,&hModule,sizeof(HMODULE),&Needed);
       //把路径放到Path变量
       GetModuleFileNameEx(hProcess,hModule,Path,sizeof(Path));
       //打印
       printf("%-6d%s\n",Process[i],Path);
   }
   //?????????????
    printf("Process Count:%d",ProcessCount);
   
  getch();
  return 0;
}
2007-3-29 13:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢大哥给出全部代码
2007-3-29 14:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
除了PID我还想知道这个进程还用了哪些IP端口,其实我是想知道IP端口的使用情况.
2007-3-29 14:27
0
雪    币: 297
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
5
NtQUerySystemInformation
察看所有内核句柄,其中包括socket句柄。其有一个标志位。以及其所属进程的pid.

然后转换为本进程可以打开的句柄,继而可用winsock的api获取其端口信息。

具体看工具下载中偶发了个小工具,有源玛。
2007-3-29 18:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 默数悲伤 发布
NtQUerySystemInformation
察看所有内核句柄,其中包括socket句柄。其有一个标志位。以及其所属进程的pid.

然后转换为本进程可以打开的句柄,继而可用winsock的api获取其端口信息。

........


能给出那个小程序的名字吗??方便查找,谢谢!!
2007-3-30 11:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
已经找到了,谢谢!!
2007-3-30 11:39
0
游客
登录 | 注册 方可回帖
返回
//