当前位置: 首页 > news >正文

只允许程序单实例运行

有时候,我们只能允许程序单实例运行,以免程序运行出错。可以通过使用App.PrevInstance和系统级的Mutex等多种办法来实现。

代码如下:

'用户昵称: 留下些什么
'个人简介: 一个会做软件的货代
'CSDN网址:https://blog.csdn.net/zezese
'电子邮箱:31319180@qq.comOption ExplicitPrivate Declare Function CreateMutex Lib "kernel32.dll" Alias "CreateMutexA" (ByRef lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As LongPrivate Const ERROR_ALREADY_EXISTS As Long = 183&Private Type SECURITY_ATTRIBUTESnLength As LonglpSecurityDescriptor As LongbInheritHandle As Long
End TypeDim hAppMutex As LongPrivate Sub Form_Initialize()'方法1: 使用 App.PrevInstance 这种办法,只要EXE文件改个名字就可以运行多个实例。If App.PrevInstance ThenMsgBox "方法1: 使用 App.PrevInstance 这种办法,只要EXE文件改个名字就可以运行多个实例。"EndEnd If'方法2: 使用系统级的Mutex,改名字也没有用。If IsRunning ThenMsgBox "方法2: 使用系统级的Mutex,改名字也没有用。"EndEnd IfEnd SubPrivate Function IsRunning() As BooleanDim sa As SECURITY_ATTRIBUTESsa.bInheritHandle = 1sa.lpSecurityDescriptor = 0sa.nLength = Len(sa)hAppMutex = CreateMutex(sa, 1, "31319180@qq.com") ' 这里请使用自己的标志字符串或者 GUID 字符串If (Err.LastDllError = ERROR_ALREADY_EXISTS) ThenCloseHandle hAppMutexIsRunning = TrueEnd IfEnd FunctionPrivate Sub Form_Terminate()CloseHandle hAppMutex
End Sub

http://www.lryc.cn/news/147153.html

相关文章:

  • 巨人互动|Facebook海外户Facebook游戏全球发布实用策略
  • 【Java架构-版本控制】-Git进阶
  • 业务需要咨询?开发遇到 bug 想反馈?开发者在线提单功能上线!
  • MybatisPlus插件篇—逻辑删除+p6spy
  • Android studio中EditText设置默认值
  • 《Java面向对象程序设计》学习笔记——第 13 章 泛型与集合框架
  • python进阶--魔法方法之类的表示
  • JVM 创建对象时分配内存的几种方法、分配方法的选择
  • 08-Vue基础之组件
  • Kotlin学习之密封类
  • opencv鼠标事件函数setMouseCallback()详解
  • 硬件知识积累 USB 接口 type - A type - B type - C 的介绍与功能说明 (简单介绍)
  • 【LeetCode】290. 单词规律
  • 研磨设计模式day12迭代器模式
  • Python3不支持sqlite3的解决方法
  • Qt应用开发(基础篇)——消息对话框 QMessageBox
  • ETC reset
  • 2023年8月30日-[SWPUCTF 2021 新生赛]jicao
  • MariaDB数据库服务器
  • Nat. Mach. Intell 2023 | DrugBAN+:域自适应的可解释双线性插值网络改进药物-靶标预测(DTI)
  • org.springframework.web.reactive.function.server.ServerResponse设置响应头
  • 高频面试题:如何分别用三种姿势实现三个线程交替打印0到100
  • 【git】Idea撤回本地分支、或远程分支提交记录的各种实际场景操作步骤
  • FPGA SPI 驱动程序
  • 【实战】十一、看板页面及任务组页面开发(五) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十七)
  • mac m1 docker 安装kafka和zookeeper
  • 宏观经济和风电预测误差分析(Matlab代码实现)
  • GO学习之 搜索引擎(ElasticSearch)
  • Sentinel —实时监控
  • 接口优化通用方案