Delphi下获取进程连接端口

Delphi下获取进程连接端口

ID:37919498

大小:35.50 KB

页数:5页

时间:2019-06-02

Delphi下获取进程连接端口_第1页
Delphi下获取进程连接端口_第2页
Delphi下获取进程连接端口_第3页
Delphi下获取进程连接端口_第4页
Delphi下获取进程连接端口_第5页
资源描述:

《Delphi下获取进程连接端口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Delphi下获取进程连接端口[转]Windows操作系统提供了一个iphlpapi.dll文件,全称IP帮助API,通过这个函数库可以获取和修改电脑的网络配置、获取网络状态信息、管理网络活动,利用这个文件中两个未公开的函数AllocateAndGetTcpExTableFromStack和AllocateAndGetUdpExTableFromStack可以获得一个TCP连接表和一个UDP连接表,这两个连接表中包含了正在使用当前连接的进程ID号。  有的资料称只有WindowsXP及以上操作系统才提

2、供了这些扩展IP帮助函数,但是在我的系统(Windows2000+SP4)中程序可以正常运行,我系统中的iphlpapi.dll文件版本号为5.0.2195.7097,程序使用Delphi7.0编写,对于不同的系统这个程序不知是否可以正常运行。  网上查到的很多例子都是VC++的,在VC++中调用这两个函数需要动态的从DLL文件中载入,因为对应的iphlpapi.lib文件中没有对这两个函数进行声明,但是在Delphi下没必要这么复杂,Delphi下调用DLL文件中的函数不需要对应的LIB文件,只要对

3、函数进行声明再进行调用就可以了。这两个函数的声明如下://获取TCP连接表的IP帮助函数声明functionAllocateAndGetTcpExTableFromStack(    varpTcpTable;    bOrder:Bool;    heap:THandle;    zero:DWORD;    flags:DWORD    ):DWORD;stdcall;external'iphlpapi.dll'    name'AllocateAndGetTcpExTableFromStack'

4、;//获取UDP连接表的IP帮助函数声明functionAllocateAndGetUdpExTableFromStack(    varpUdpTable;    bOrder:Bool;    heap:THandle;    zero:DWORD;    flags:DWORD    ):DWORD;stdcall;external'iphlpapi.dll'    name'AllocateAndGetUdpExTableFromStack';  在调用函数前还要自己定义几个结构,及TCP连接

5、表和UDP连接表,代码如下://相关数据结构的定义const    ANY_SIZE=256;type    MIB_TCPEXROW=record        dwState:DWORD;      //连接状态        dwLocalAddr:DWORD;  //本地地址        dwLocalPort:DWORD;  //本地端口        dwRemoteAddr:DWORD;//远程地址        dwRemotePort:DWORD;//远程端口        dwP

6、rocessId:DWORD;  //进程ID号    end;    MIB_TCPEXTABLE=record        dwNumEntries:DWORD;//端口数量        table:array[0..ANY_SIZE-1]ofMIB_TCPEXROW;    end;    PMIB_TCPEXTABLE=^MIB_TCPEXTABLE;    MIB_UDPEXROW=record        dwLocalAddr:DWORD;//本地地址        dwLocal

7、Port:DWORD;//本地端口        dwProcessId:DWORD;//进程ID号    end;    MIB_UDPEXTABLE=record        dwNumEntries:DWORD;//端口数量        table:array[0..ANY_SIZE-1]ofMIB_UDPEXROW;    end;    PMIB_UDPEXTABLE=^MIB_UDPEXTABLE;  这两个函数的调用代码如下:AllocateAndGetTcpExTableFromS

8、tack(pTcpTab,true,GetProcessHeap(),2,2);//获取TCP连接表AllocateAndGetUdpExTableFromStack(pUdpTab,true,GetProcessHeap(),2,2);//获取UDP连接表  仅有进程ID号是不够的,还要获得进程对应可执行文件名,这个可以使用CreateToolhelp32Snapshot函数获得系统进程快照,利用Process32First函数和Process32Ne

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。