inno setup 判断系统端口占用函数

2024-04-12 07:38

本文主要是介绍inno setup 判断系统端口占用函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//#############################IsNotPortOccupation函数###################################
// 自定义函数,判断端口占用
function IsNotPortOccupation(strPortNum: String): Boolean;
// 变量定义
var ErrorCode: Integer;
var bRes: Boolean;
var strFileContent: AnsiString;
var strTmpPath: String;  // 临时目录
var strTmpFile: String;  // 临时文件,保存查找软件数据结果
var strCmdFind: String;  // 查找端口命令, netstat  -natp tcp |findstr "LISTENING" |findstr "135"| find /C  "135"  找到的话返回个数,找不到为0
beginstrTmpPath := GetTempDir();strTmpFile := Format('%sfindProtRes.txt', [strTmpPath]);strCmdFind := Format('/c netstat -natp tcp |findstr "LISTENING" |findstr  ":%s"|find /C ":%s" > "%s"', [strPortNum, strPortNum ,strTmpFile]);log(strCmdFind);bRes := ShellExec('open', ExpandConstant('{cmd}'), strCmdFind, '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);  bRes := LoadStringFromFile(strTmpFile, strFileContent);strFileContent := Trim(strFileContent);if StrToInt(strFileContent)   > 0 then beginresult:=true;end else result:=false;end;
//#############################IsNotProcessRun函数###################################
procedure InitializeWizard();
beginif IsNotPortOccupation('80') then beginMsgBox('80端口占用', mbInformation, MB_OK);end elseMsgBox('80端口没有占用', mbInformation, MB_OK);
end;

 

延伸,判断 windows 系统有没有安装指定服务的方法类似。代码如下:

//#############################IsNotInstalledServices函数###################################
// 自定义函数,查看系统有没有安装的服务
function IsNotInstalledServices(strServiceName: String): Boolean;
// 变量定义
var ErrorCode: Integer;
var bRes: Boolean;
var strFileContent: AnsiString;
var strTmpPath: String;  // 临时目录
var strTmpFile: String;  // 临时文件,保存查找软件数据结果
var strCmdFind: String;  // 查找端口命令
beginstrTmpPath := GetTempDir();strTmpFile := Format('%sfindServicesRes.txt', [strTmpPath]);strCmdFind := Format('/c sc query state= all  | findstr "%s"| findstr "SERVICE_NAME" | find /C "%s" > "%s"', [strServiceName, strServiceName ,strTmpFile]);log(strCmdFind);bRes := ShellExec('open', ExpandConstant('{cmd}'), strCmdFind, '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);  bRes := LoadStringFromFile(strTmpFile, strFileContent);strFileContent := Trim(strFileContent);if StrToInt(strFileContent)   > 0 then beginresult:=true;end else result:=false;end;
procedure InitializeWizard();
beginif IsNotInstalledServices('Apache2.4') then beginMsgBox('Apache2.4服务已安装', mbInformation, MB_OK);end elseMsgBox('Apache2.4服务未安装', mbInformation, MB_OK);
end;
//#############################IsNotInstalledServices函数###################################

 

这篇关于inno setup 判断系统端口占用函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/896516

相关文章

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT