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

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet