PB开发Windows服务方案

news2024/9/30 5:28:28
1、项目简介

​ PB作为一门客户端开发语言,虽然官方并未提供标准的Windows服务开发方案,但使用PB开发Windows服务并非无法实现。自PB9开始,PB提供了PBNI接口,PB与C++可以通过这个接口互相调用,而C++可以开发Windows服务。因此只要使用C++将Windows服务的主体结构固化下来,在适当的时候通过PBNI接口启动PB进程、调用PB编写的处理过程,就能够实现以PB语言开发Windows服务。PBExtSVC就是这样一个实现PB语言以固定模板快速开发Windows服务的工具。

​ PBExtSVC项目的结构如下图:

在这里插入图片描述

2、项目配置

​ PBExtSVC.ini为项目配置文件,有如下基础配置项:

在这里插入图片描述

​ 按这个配置文件创建的服务如下图:

在这里插入图片描述

3、快速入门
3.1、服务创建

管理员身份运行CMD窗口,进入项目目录,运行以下代码即可创建服务:

PBExtSVC.exe /install

执行效果如图:

在这里插入图片描述

3.2、服务卸载

同样以管理员身份运行CMD窗口,进入项目目录,运行以下代码卸载服务:

PBExtSVC.exe /uninstall
3.3、服务处理过程PB项目编写

按3.1方式创建服务后,如果直接启动服务会报错,因为还没有提供编写服务处理过程的PB库。

首先创建一个PB项目,添加pbsvc.pbl,新建一个PBSVC类的子类:

在这里插入图片描述

PBSVC类的属性及事件的具体作用如下:

属性or事件名称作用
属性service_run_interval服务每次执行的事件间隔,单位毫秒
事件service_start服务启动时触发执行的代码
事件service_run服务每次执行的代码
事件service_stop服务停止时触发执行的代码

接下来编写一个这样的服务,服务启动时打开一个文件并写入打开时间,每隔3秒写入一次当前执行的时间,服务停止时写入停止时间后关闭这个文件。

添加实例变量:

PRIVATE:
	int iFile

service_start事件添加代码:

iFile = FileOpen('D:\Temp\PBExtSVCTest\test.log', textmode!, write!, shared!)
FileWriteEx(iFile, string(now()) + ' PBSVC start ~r~n')

service_run事件添加代码:

FileWriteEx(iFile, string(now()) + ' PBSVC run ~r~n')

service_stop事件添加代码:

FileWriteEx(iFile, string(now()) + ' PBSVC stop ~r~n')
FileClose(iFile)

设置属性service_run_interval为3000

最后Deploy项目,将生成的pbd文件拷贝到PB库目录PBSVCLib中(无需拷贝生成的exe文件)

3.4、服务执行

PBExtSVC.ini中配置好PB项目名、类名和PBVM地址后,即可启动服务测试。在Windows服务管理器中启动服务,执行一段时间后停止服务。可以看到,D:\Temp\PBExtSVCTest目录下生成了test.log文件,写入的内容如下图:

在这里插入图片描述

4、项目获取

PBExtSVC项目下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1322842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java智慧工地数字化云平台源码(SaaS模式)

智慧工地是智慧城市理念在建筑工程行业的具体体现,智慧工地解决方案是建立在高度信息化基础上一种支持人事物全面感知、施工技术全面智能、工作互通互联、信息协同共享、决策科学分析、风险智慧预控的新型信息化手段。围绕人、机、料、法、环等关键要素,…

【算法与数据结构】376、LeetCode摆动序列

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题难点在于要考虑到不同序列的情况,具体来说要考虑一下几种特殊情况: 1、上…

python学习,2.简单的数据类型

1.了解数及运算 整数:1,2,3。 运算符:加减乘除,**(乘方) 浮点数:python将所有带小数点的数称为浮点数。 这一块和别的语言有些不一样, 像C,分为float,double&#x…

河南开放大学形成性考核 平时作业 统一参考资料

试卷代号:1288 现代管理原理 参考试题(开卷) 一、单项选择(下列选项中只有一个答案是准确的,请将其序号填入括号中。每小题2分,共20分) 1.“凡事预则立,不预则废”,说…

极简Windows本机下载安装启动zookeeper

1.下载zookeeper Apache Download Mirrors 注意!!!:安装的路径不要用中文 2.生成zoo.cfg文件 复制zookeeper的conf目录下的zoo_simple.cfg文件,并重命名为zoo.cfg 修改zoo.cfg文件中的路径(data,log…

Navicat 16最新操作

Navicat 16最新操作 1 知识小课堂1.1 Navicat 161.2 其他数据库连接工具 2 下载和安装2.1 下载2.2 安装 1 知识小课堂 1.1 Navicat 16 Navicat 16是一款功能强大的数据库管理工具,可以创建多个连接,方便管理不同类型的数据库,包括MySQL、Ora…

如何利用研发效能度量工具分析代码评审的效率、质量与瓶颈?

代码评审(Code Review)是保障代码质量中一个非常重要的环节,也是保证项目交付质量的关键一环。代码评审的开展对于产品质量提升、工程素养提升、研发团队的技术分享交流,或是完善团队代码规范,都能起到重要的促进作用。…

​【EI会议征稿通知】第三届智能系统、通信与计算机网络国际学术会议(ISCCN 2024)

第三届智能系统、通信与计算机网络国际学术会议(ISCCN 2024) 2024 3rd International Conference on Intelligent Systems, Communications and Computer Networks 第三届智能系统、通信与计算机网络国际学术会议(ISCCN 2024)将…

期货股市联动(期股联动助推资本市场上扬)

期股联动——期货股市助推资本市场上扬 随着我国资本市场的不断发展,期货和股票这两个市场也在逐渐紧密地联系起来。期货和股票的相互作用是一种“期股联动”,它能够促进资本市场的上扬。 期货与股票市场 期货市场是一种标准化的场外交易市场&#xf…

OpenAI发布AGI安全风险框架!董事会可随时叫停GPT-5等模型发布,奥特曼也得乖乖听话

OpenAI 再次强调模型安全性!AGI 安全团队 Preparedness 发布模型安全评估与监控框架! 这两天关注 AI 圈新闻的小伙伴们可能也有发现,近期的 OpenAI 可谓进行了一系列动作反复强调模型的“安全性”。 前有 OpenAI 安全系统(Safety…

HarmonyOS(十五)——状态管理之@Prop装饰器(父子单向同步)

上一篇文章我们认识了状态管理的State装饰器(组件内状态),接下来我们学习另外一个状态管理装饰器Prop装饰器。 Prop装饰的变量可以和父组件建立单向的同步关系。Prop装饰的变量是可变的,但是变化不会同步回其父组件。 说明&#…

可视化数据监控大屏网页界面,数据大屏模版PS资料(免费UI源文件)

数据大屏模板在大数据领域被广泛应用,其优势在于能够将复杂的数据通过图形、图表等方式呈现出来,使数据更易于理解。数据大屏模板可以用来进行数据分析。通过对数据的比较、趋势分析、异常检测等,可以发现数据中的规律和问题,为决…

SQL进阶理论篇(十):数据库中的锁

文章目录 简介按照锁的粒度进行划分从数据库管理的角度进行划分从程序员的角度进行划分为什么共享锁会发生死锁?参考文献 简介 索引和锁,是数据库中的两个核心知识点。 索引的相关知识点,在之前的几章里我们已经介绍的差不多了。接下来我们…

CEC2013(python):五种算法(HHO、WOA、GWO、DBO、PSO)求解CEC2013(python代码)

一、五种算法简介 1、哈里斯鹰优化算法HHO 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、蜣螂优化算法DBO 5、粒子群优化算法PSO 二、5种算法求解CEC2013 (1)CEC2013简介 参考文献: [1] Liang J J , Qu B Y , Suganthan P N , et al. P…

安卓开发学习---kotlin版---笔记(三)

网络 安卓主页的网络框架&#xff1a;OkHttp 在OkHttp的基础上进行封装的&#xff1a;Retrofit框架&#xff0c;更常使用 OkHttp学习 在使用网络请求的时候&#xff0c;先添加网络访问权限&#xff1a; <uses-permission android:name"android.permission.INTERNET&…

【数据结构】栈的使用|模拟实现|应用|栈与虚拟机栈和栈帧的区别

目录 一、栈(Stack) 1.1 概念 1.2 栈的使用 1.3 栈的模拟实现 1.4 栈的应用场景 1. 改变元素的序列 2. 将递归转化为循环 3. 括号匹配 4. 逆波兰表达式求值 5. 出栈入栈次序匹配 6. 最小栈 1.5 概念区分 一、栈(Stack) 1.1 概念 栈&#xff1a;一种特殊的线性表&…

数据库——水果商店进阶

智能2112杨阳 一、目的与要求&#xff1a; 综合运用SQL语言相关知识如变量、游标、函数、触发器等解决实际问题。 二、内容&#xff1a; 设计并完成以下实验&#xff0c;要求附上源码&#xff08;非截图&#xff09;&#xff0c;测试效果截图 在订单详情表orderitems插入新…

【openGauss/MogDB列存表的delta表测试】

列存储格式是OLAP类数据库系统最常用的数据格式&#xff0c;适合复杂查询、范围统计类查询的在线分析型处理系统。cstore列存储的主体数据文件以CU为I/O单元&#xff0c;只支持追加写操作&#xff0c;因此cstore只有读共享缓冲区。CU间和CU内的可见性由对应的CUDESE表&#xff…

高项-【整合管理】

8.1管理基础 项目整合管理由项目经理负责&#xff0c;责任不能被授权和转移。对整个项目承担最终责任。执行项目整合是担任双重角色&#xff1a; 组织层面&#xff0c;与项目发起人携手合作&#xff0c;了解战略目标&#xff0c;确保项目目标和成果与项目组合、项目集一集业务…