【PB案例学习笔记】-15怎样限制应用程序运行次数?

2024-06-04 08:12

本文主要是介绍【PB案例学习笔记】-15怎样限制应用程序运行次数?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面

这是PB案例学习笔记系列文章的第15篇,该系列文章适合具有一定PB基础的读者。

通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。

文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.git

gitee代码仓库

需要源代码的小伙伴们可以自行下载查看,后续文章涉及到的案例代码也都会提交到这个仓库【pb-project-example

如果对小伙伴有所帮助,希望能给一个小星星⭐支持一下小凡。

一、小目标

本次案例中,我们实现这么一个需求。应用程序已经在运行的时候,若再次双击应用程序运行程序,

则弹出提示框提示:应用程序已启动,请勿多次启动。

这样的需求在日常开发中也是经常遇到的,其实这个功能实现起来非常简单。

应用程序多次启动弹框提示

二、实现思路

程序运行时,窗口一般是由ApplicationOpen事件打开,如果在Open事件中以系统主窗口的标题Title作为依据,

若有其他与此Title同名应用程序运行,再想启动此程序就可以判断出程序是否在运行,从而实现限制程序运行次数功能了

三、创建程序基本框架

① 新建examplework 工作区

② 新建exampleapp应用

③ 建立w_main 窗口,Title设置为"应用程序运行次数"

由于篇幅原因,以上步骤不详细展开,如果忘记了的小伙伴可以翻一翻之前的文章

④ 简单进行界面布局

我们在w_main窗口上新建3个StaticText,分别命名为st_1st_2st_3。修改3个控件的Text属性如下

控件布局

四、编写代码

双击开发界面左边的System Tree中的exampleapp应用对象

① 在Declare Global External Functions选项卡中添加动态库user32引用

FUNCTION long FindWindowA( ulong Winhandle, string wintitle ) Library "user32" 

②在其Open事件中添加如下代码

ulong l_handle,lu_class
string ls_name
ls_name = "应用程序运行次数"
l_handle = FindWindowA(lu_class,ls_name)
if l_handle > 0 thenMessageBox("提示信息","应用程序" + This.AppName + "已经启动,请勿多次启动!")halt close
elseopen(w_main)
end if

五、运行程序

我们只用添加上述代码即可实现需求功能,是不是很简单。接下来,程序是否达到我们预期效果

① 我们先运行程序,正常出现下面

正常运行程序

② 我们在打开一个PB,在同样的方法运行程序,结果会有下面弹框提示。

达到了应用程序只能运行一次的效果,完结撒花 ★,°:.☆( ̄▽ ̄)/$:.°★

应用程序多次启动弹框提示
本期内容到这儿就要结束了,希望对您有所帮助。★,°:.☆( ̄▽ ̄)/$:.°★
我们下期再见 (●’◡’●) ヾ(•ω•`)o

这篇关于【PB案例学习笔记】-15怎样限制应用程序运行次数?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或