Delphi获取进程连接端口

在 Delphi 编程中,想获取进程的网络连接端口吗?其实方法挺。你可以通过调用 Windows API 来获得目标进程的端口信息,这对于网络调试、安全或者系统监控都有用。通过几步操作,比如打开进程、获取 TCP/UDP 连接表、解析和筛选出相关连接,整个流程就能顺利完成。你只需要关注目标进程的 ID,用`GetExtendedTcpTable`或`GetExtendedUdpTable`来获取连接表,根据进程 ID 筛选出对应的端口号。你可以像下面这样写代码:

```delphi uses ..., Windows, IpHlpApi; type TCP_TABLE_OWNER_PID_ALL = ^MIB_TCPTABLE_OWNER_PID; PMIB_TCPROW_OWNER_PID = ^MIB_TCPROW_OWNER_PID; function GetProcessTcpPorts(PID: DWORD): TList; begin Result := TList.Create; // 获取 TCP 表格大小 if GetExtendedTcpTable(nil, @Size, True, AF_INET, TCP_TABLE_OWNER_PID_ALL, 0) = ERROR_INSUFFICIENT_BUFFER then begin SetLength(TcpTable, Size); if GetExtendedTcpTable(PChar(@TcpTable), @Size, False, AF_INET, TCP_TABLE_OWNER_PID_ALL, 0) = NO_ERROR then try for i := 0 to TcpTable.dwNumEntries - 1 do begin Row := TCP_TABLE_OWNER_PID(TcpTable).table[i]; if Row.dwOwnerPid = PID then Result.Add(Row.dwLocalPort); end; finally VirtualFree(PChar(@TcpTable), 0, MEM_RELEASE); end; end; end; ```你会看到,代码简洁,搞定后能帮你精准找到进程的网络端口。提醒一下,记得权限问题,避免因为权限不足导致操作失败。如果你需要获取 UDP 连接,只需要替换相应函数就行。,掌握这点小技巧,能让你在 Delphi 开发中轻松进行系统层面的网络调试。

rar 文件大小:14.93KB