防止程序被重复执行

abaqus运行报错 WindowsError:[Error 2] abaqus提交job总是提示“WindowsError [Error 2”,报这个错误,可能是由于安装其他软件改变了abaqus软件的路径导致,总结了看到的教程,按照下面的方法可以解决这个问题。 步骤一:找到你的abaqus安装路径(我是按照一个安装视频安装的,安装路径为SIMULI1),然后找到SIMULIA文件夹,点击进入后找到commands文件夹,将这个路径复制下来。 步骤二:我的电脑右键属性,在左侧中找到高级系统设置并... 阅读详情
防止程序被重复执行(第一法)

Windows95的程序一般都可以重复执行,例如你按下WIN+E组合键即启动资
源管理器,如果再按WIN+E组合键又会出现一个资源管理器,这两个程序互不干
扰。有时候你可以需要制作这样一个程序:当该程序已经执行时,若用户企图
再次执行该程序则只会激活那个已执行的程序,而不是又出现一个副本。
  完成这个目的的核心就是要在程序启动时查找该程序是否已经运行,我曾
试过很多种方法,包括向“全局元素表”(Global ATOM Table)写特定字符串等
等,但最简单的方法还是下面这个:

在程序启动时将Application的Title特性字段的值暂时改变。
利用Windows API函数FindWindows()查找窗口
恢复Application的Title值

  上述步骤一般在主Form的OnCreate事件中实现,示例如下:

procedure TForm1.FormCreate(Sender: TObject);
var
ZAppName: array[0..127] of char;
Hold: String;
Found: HWND;
Found: HWND;
begin
Hold := Application.Title;
Application.Title := 'OnlyOne'
+ IntToStr(HInstance); // 暂时修改窗口标题
StrPCopy(ZAppName, Hold); // 原窗口标题
Found := FindWindow(nil, ZAppName); // 查找窗口
Application.Title := Hold; // 恢复窗口标题
if Found<>0 then begin
// 若找到则激活已运行的程序并结束自身
ShowWindow(Found, SW_RESTORE);
Application.Terminate;
end;
end;

相关文章:防止程序被重复执行(另一种方法)


  实现单实例运行的关键是判断前一实例是否存在,Win3.x中运行的程序能获知前
一实例的句柄,从而可以方便地进行判断,但 Windows 95 是抢先式多任务系统,其
程序的前一实例句柄恒为零,所以只有另寻其他办法。目前最有效的办法是通过查看
是否有相同窗口类名的例程存在来进行判断。下面介绍在Delphi中实现的方法。

1、对主窗口程序的改动:

在主窗口(即程序创建的第一个窗口)中interface节加入
const
CM_RESTORE = WM_USER + $1000; {自定义的“恢复”消息}
MYAPPNAME = "My Delphi Program";
并在Form的定义的public节中加入
procedure CreateParams(var Params: TCreateParams); override;
Procedure RestoreRequest(var message: TMessage); message CM_RESTORE;
在implementation节中加入
{指定窗口名称}
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WinClassName := MYAPPNAME;
end;

{处理“恢复”消息}
procedure TForm1.RestoreRequest(var message: TMessage);
procedure TForm1.RestoreRequest(var message: TMessage);
begin
if IsIconic(Application.Handle) = TRUE then
Application.Restore
else
Application.BringToFront;
end;

经过以上修改,程序的主窗口的类名已经被指定了,这是进行判断的基础。一般在程
序刚开始运行的时候进行判断,所以还要对DPR文件进行修改。

2、对DPR文件的改动

在 uses 节中添加 windows、messages这两个单元加入下列语句,注意两个文件中常
量CM_RESTORE和MYAPPNAME的定义必须一致
const
CM_RESTORE = WM_USER + $1000; {自定义的“恢复”消息}
MYAPPNAME = "My Delphi Program";
var
RvHandle : hWnd;

将下列语句插到程序最前部(在Application.Initialize之前)

RvHandle := FindWindow(MYAPPNAME, NIL);
if RvHandle > 0 then
begin
PostMessage(RvHandle, CM_RESTORE, 0, 0);
Exit;
end;
这段程序的意思是如果找到一个类名相同的窗口,则向该窗口发送一个消息,并退
出,而本例中原窗口收到该消息后会自动激活或从图标还原,从而达到了避免二次运
行且能自动调出前一例程的目的。


从立创商城到Cadence:手把手教你实现封装格式的精准迁移 本文详细介绍了如何从立创商城获取元器件封装并精准迁移至Cadence Allegro的全流程。通过实战案例MAX31865ATP+T芯片,逐步解析Altium Designer格式转换、Cadence环境配置、封装导入验证等关键步骤,提供常见问题解决方案和效率提升技巧,帮助硬件工程师实现封装格式的高效迁移。 阅读详情

相关推荐

有限元缺陷:剪切锁死

有限元缺陷:剪切锁死

wsxww11的博客 5187

禁止程序重复启动的一些方法

禁止程序重复启动的一些方法

大草的博客 1986

TI AWR1642实战指南:CCS调试mmWave Demo Visualizer全流程解析

本文详细解析了TI AWR1642开发板的CCS调试流程,重点介绍了mmWave Demo Visualizer的使用方法。从环境准备、版本确认到bin文件烧录、CCS工程配置,再到调试启动与结果验证,提供了全流程的实战指南,帮助开发者快速掌握AWR1642的调试技巧,避免常见错误。

weixin_30790841的博客 111

脚本防止重复执行

http://blog.sina.com.cn/s/blog_6f37b64d0100vez8.html #!/bin/bash   ## 获取当前的进程号 pid=$$   ## 获取当前的脚本文件名 name=`basename $0`   ## 检测进程内是否有此进程号,并且此进程号的运行程序为当前脚本名,如果有则kill此进程

whyhonest的专栏 744

医学影像处理实战:用SimpleITK将CT数据重采样到统一尺寸(附完整代码)

本文针对医学影像分析中多源CT数据尺寸不一致导致深度学习模型训练失败的问题,提供了基于SimpleITK的实战解决方案。通过深入解析图像尺寸与间距的关系,详细阐述了如何通过调整体素间距进行重采样,而非简单补零,从而在保持图像物理尺寸不变的前提下,将数据统一到固定尺寸,确保输入网络的3D数据空间对齐且解剖信息准确。

weixin_29062671的博客 270

基于HPM5E00的EtherCAT从站开发实战:从硬件解析到软件调试

实时工业以太网通信是工业自动化与运动控制领域的核心技术,它通过硬件与协议栈的协同,实现了微秒级的高确定性数据交换。其技术价值在于为多轴同步、机器人控制等复杂场景提供了高实时性、高同步精度的通信基础。在应用场景上,广泛服务于数控机床、包装机械、半导体设备等高端制造领域。本文聚焦于EtherCAT从站开发,深入解析了基于先楫HPM5E00高性能MCU与专用从站控制器(ESC)的硬件架构设计,并详细阐述了开源协议栈SOES的移植、对象字典配置以及过程数据(PDO)映射等核心软件实践,为开发者快速构建稳定可靠的实时

weixin_30915951的博客 501

Windows批处理笔记

Windows批处理 所谓批处理,就是按照规定的顺序自动执行若干个指定的DOS命令或程序。也就是说,把原来一个一个执行的命令汇总起来,成批的执行。批处理文件可以移植到其它电脑中运行,因此可以大大节省命令反复输入的繁琐。 批处理,英文译为BATCH,批处理文件后缀BAT就取的前三个字母。它的构成没有固定格式,只需要遵守以下这条规则:每一行可视为一个命令,每个命令里可以含多条子命令,从第一

huangkangying的专栏 1344

WSL2 Ubuntu复现FoundationPose项目(docker)

复现一个基于深度学习的物体姿态估计框架FoundationPose项目,使用docker,WSL2

woaidawangwang的博客 2000

禁止程序多次运行

前言   在做机房收费系统中又考虑到一个问题,我最后打包后的应用程序如果多次打开又会出现怎么样的情形呢?果不其然,竟然出现多个程序的画面。如果用户没有关闭当前运行的应用程序,又打开同样的程序的话,那么由于两个程序占用同一个端口,这时就会产生错误。下面就用两种方法为大家介绍下如何避免这种问题的发生。      方法一:使用互斥量禁止程序运行多次  源代码

2624

智能硬件产品 App 全球发布 第 1 章:全球 App 发布战略设计

本章阐述智能硬件 App 全球发布战略,涵盖市场分析、竞争格局、用户画像及资源配置。通过制定可执行的全球化推广路径,整合地区法规合规、渠道分发策略与营销活动设计,助力团队快速进入主流商店并确立品牌影响力。同时构建可量化的 KPI 监控体系,指导项目进度追踪与效果复盘,确保产品迭代持续优化,降低运营总成本。

moton2017的博客 156

【银河麒麟服务器操作系统】安装英伟达4090D显卡驱动操作指南

本文详细介绍了在银河麒麟高级服务器操作系统V10SP3-2403-X86版本上安装NVIDIA RTX4090D显卡驱动的完整流程。主要内容包括:准备工作检查、开源驱动禁用、运行级别切换、依赖包安装以及交互式安装过程中的关键选项选择(32位库选Yes、X配置选No)。通过禁用nouveau驱动、重建内核引导等步骤确保驱动安装成功,最后通过nvidia-smi命令验证驱动安装情况。文档提供了操作检查表和安装流程图,帮助用户在银河麒麟系统上顺利完成显卡驱动部署。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 3101

防止程序重复执行的单元

防止程序重复执行的单元 //工程引用此单元就能防止同时出现多个实例unit MultInst;interfaceuses Windows ,Messages, SysUtils, Classes, Forms;implementationconst STR_UNIQUE = '{2BE6D96E-827F-4BF9-B33E-8740412CDE96}'; MI_ACTIVEAP...

111

Android实现TextToSpeech控件实现语音播报--朗读文字 (附完整源码)

Android实现TextToSpeech控件实现语音播报--朗读文字 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1116

防止程序重复执行:通过类名或窗口名

在程序初始化前,检查同类名或是同窗口名的程序是否执行,如果有执行,则强制退出程序。 在项目头文件中加入代码,需要引用Winapi.Windows 示例: program Project1; uses Vcl.Forms, Winapi.Windows, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin //如果使用类名,改为FindWindow(PChar('TForm1'),nil) //TForm1是主窗体类名,Form1是主窗...

YanJinrong的专栏 280

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

防止程序重复执行

有的程序需要现在同一时间只能运行一个,这种需求可以用锁的方式来实现,在START-OF-SELECTION 事件后加锁,如果是加锁成功,说明还没有程序在执行,如果是加锁失败,则说明已经有同名程序在运行,报错即可。 注:这个锁是借用程序修改的锁,在SE38修改程序的时候也会加这个锁。 程序如下: START-OF-SELECTION.   CA

少年休闲海 2666

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ABAP 防止程序重复执行

更多内容关注公众号:SAP Technical 各位可以关注我的公众号:SAP Technical 有的程序需要现在同一时间只能运行一个,这种需求可以用锁的方式来实现,在START-OF-SELECTION事件后加锁,如果是加锁成功,说明还没有程序在执行,如果是加锁失败,则说明已经有同名程序在运行,报错即可。 注:这个锁是借用程序修改的锁,在SE38修改程序的时候也会加这个锁。 程...

matinal 當冬夜漸暖 。公众号:matinal 1025

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VB怎样判断、防止程序重复执行

Private Sub Form_load()    判断程序是否已经运行    If App.PrevInstance Then     MsgBox "本程序已经运行!", vbInformation Or vbOKOnly, "提示信息"     Unload Me     Exit Sub    End If    以下是主要程序    ……

zdl480的专栏 1857

Delphi防止程序被重复执行

复制到新的unit中,引用到自己的程序中即可 unit MultInst;interfaceconstMI_QUERYWINDOWHANDLE = 1;MI_RESPONDWINDOWHANDLE = 2;MI_ERROR_NONE        = 0;MI_ERROR_FAILSUBCLASS = 1;MI_ERROR_CREATINGMUTEX = 2;// Call this func

hackxz's Blog 1075

防止程序重复执行方法汇编

//////////////////////////////////////////////////////////////////////////////  CString lpszName="proj Test";   //窗口的标题       HANDLE   hMutex   =   NULL;        hMutex   =   ::OpenMutex(MUTEX_ALL_A

格码老师教编程 1167

SAP ABAP 防止程序重复执行

有的程序需要现在同一时间只能运行一个,这种需求可以用锁的方式来实现,在START-OF-SELECTION 事件后加锁,如果是加锁成功,说明还没有程序在执行,如果是加锁失败,则说明已经有同名程序在运行,报错即可。注:这个锁是借用程序修改的锁,在SE38修改程序的时候也会加这个锁。

matinal 當冬夜漸暖 。公众号:matinal 649

delphi 防止程序重复执行

delphi 防止程序重复执行

pdw2009的专栏 1577
上一篇: Delphi TQuery 的Locate用法
下一篇: 每天只问小孩四句话(转载收藏) 最强悍的教育方式~都看看吧!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值