Inno setup 如何在Inno设置中检查端口是否可用?

Inno setup 如何在Inno设置中检查端口是否可用?,inno-setup,pascalscript,Inno Setup,Pascalscript,我需要检查一些端口是否可用?如何在Inno设置中实现这一点? 有没有办法在Inno设置中使用socket?这里有图书馆吗?如果有,如何导入和使用 谢谢您的回答。您可以使用我的功能检查端口是否可用: 函数CheckPortOccessed(端口:字符串):布尔值; 变量 结果代码:整数; 开始 Exec(ExpandConstant({cmd}'),'/C netstat-na | findstr'+'/C:“:'+Port+'”,'',0, EWWAIT未过滤,结果代码); 如果结果代码为1,则

我需要检查一些端口是否可用?如何在Inno设置中实现这一点? 有没有办法在Inno设置中使用socket?这里有图书馆吗?如果有,如何导入和使用


谢谢您的回答。

您可以使用我的功能检查端口是否可用:

函数CheckPortOccessed(端口:字符串):布尔值;
变量
结果代码:整数;
开始
Exec(ExpandConstant({cmd}'),'/C netstat-na | findstr'+'/C:“:'+Port+'”,'',0,
EWWAIT未过滤,结果代码);
如果结果代码为1,则
开始
日志('此端口('+端口+')已被占用');
结果:=真;
结束
其他的
开始
结果:=假;
结束;
结束;
返回(在MsgBox中)使用端口80的服务或程序的函数。 如果输出为空,则不显示MsgBox

函数NextButtonClick(CurPage:Integer):布尔值;
变量
TmpFileName,ExecStdout:string;
结果代码:整数;
开始
如果CurPage=wpgome,那么
开始
TmpFileName:=ExpandConstant('{tmp}')+'\~pid.txt';
Exec('cmd.exe',
“/C FOR/F”usebackq tokens=5 delims=“%i IN(`netstat-ano^ | find“0.0:80”`)DO”
+“@tasklist/fi”pid eq%i“|查找“%i”>“+TmpFileName+”,“”,SW_HIDE,
EWWAIT未过滤,结果代码);
如果LoadStringFromFile(TmpFileName,ExecStdout),则
开始
MsgBox('13+ExecStdout,mbInformation,MB#u OK'使用端口80);
结束;
DeleteFile(TmpFileName);
结束;
结果:=真;
结束;

我用WinSock编写了一个解决方案,但有人删除了这个问题。顺便说一句,这里有很多相同的问题。解决办法是什么?我应该使用winsock.dll吗?最好的方法是尝试用winsock绑定套接字。我看到的所有其他方法都不太可靠。谢谢,你可以写下来作为答案。我接受。和的可能重复。尽可能避免使用命令行工具。始终首选本机Windows API解决方案。在这种情况下,您可以尝试绑定到给定端口的套接字,看看它是否失败。这是真的。我四个月前解决了这个问题。你的回答是正确的。