Delphi下获取进程连接端口.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Delphi下获取进程连接端口

Delphi下获取进程连接端口 [转] Windows操作系统提供了一个iphlpapi.dll文件,全称IP帮助API,通过这个函数库可以获取和修改电脑的网络配置、获取网络状态信息、管理网络活动,利用这个文件中两个未公开的函数AllocateAndGetTcpExTableFromStack和AllocateAndGetUdpExTableFromStack可以获得一个TCP连接表和一个UDP连接表,这两个连接表中包含了正在使用当前连接的进程ID号。   有的资料称只有Windows XP及以上操作系统才提供了这些扩展IP帮助函数,但是在我的系统(Windows2000+SP4)中程序可以正常运行,我系统中的iphlpapi.dll文件版本号为5.0.2195.7097,程序使用Delphi7.0编写,对于不同的系统这个程序不知是否可以正常运行。   网上查到的很多例子都是VC++的,在VC++中调用这两个函数需要动态的从DLL文件中载入,因为对应的iphlpapi.lib文件中没有对这两个函数进行声明,但是在Delphi下没必要这么复杂,Delphi下调用DLL文件中的函数不需要对应的LIB文件,只要对函数进行声明再进行调用就可以了。这两个函数的声明如下: //获取TCP连接表的IP帮助函数声明 function AllocateAndGetTcpExTableFromStack( ???? var pTcpTable; ???? bOrder : Bool; ???? heap : THandle; ???? zero : DWORD; ???? flags : DWORD ???? ): DWORD; stdcall; external iphlpapi.dll ???? name AllocateAndGetTcpExTableFromStack; //获取UDP连接表的IP帮助函数声明 function AllocateAndGetUdpExTableFromStack( ???? var pUdpTable; ???? bOrder : Bool; ???? heap : THandle; ???? zero : DWORD; ???? flags : DWORD ???? ): DWORD; stdcall; external iphlpapi.dll ???? name AllocateAndGetUdpExTableFromStack;   在调用函数前还要自己定义几个结构,及TCP连接表和UDP连接表,代码如下: //相关数据结构的定义 const ???? ANY_SIZE=256; type ???? MIB_TCPEXROW = record ???????? dwState : DWORD;?????? //连接状态 ???????? dwLocalAddr : DWORD;?? //本地地址 ???????? dwLocalPort : DWORD;?? //本地端口 ???????? dwRemoteAddr : DWORD; //远程地址 ???????? dwRemotePort : DWORD; //远程端口 ???????? dwProcessId : DWORD;?? //进程ID号 ???? end; ???? MIB_TCPEXTABLE = record ???????? dwNumEntries : DWORD; //端口数量 ???????? table : array [0..ANY_SIZE-1] of MIB_TCPEXROW; ???? end; ???? PMIB_TCPEXTABLE = ^MIB_TCPEXTABLE; ???? MIB_UDPEXROW = record ???????? dwLocalAddr : DWORD; //本地地址 ???????? dwLocalPort : DWORD; //本地端口 ???????? dwProcessId : DWORD; //进程ID号 ???? end; ???? MIB_UDPEXTABLE = record ???????? dwNumEntries : DWORD; //端口数量 ???????? table : array [0..ANY_SIZE-1] of MIB_UDPEXROW; ???? end; ???? PMIB_UDPEXTABLE = ^MIB_UDPEXTABLE;   这两个函数的调用代码如下: AllocateAndGetTcpExTableFromStack(pTcpTab,true,GetProcessHeap(),2,2); //获取TCP连接表 Allocate

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档