如何使自己的程序只运行一次

c# 程序只运行一次的处理方法 方法一:遍历正在有相同名字运行的例程using System;using System.Collections.Generic;using System.Text;using System.Diagnostics;using System.Runtime.InteropServices;namespace DHPSS.COM{ /// /// 阅读详情

我介绍两个主流的方法。

方法一:使用Mutex来进行

1.  首先要添加如下的namespace:

using System.Threading;

 

2.  修改系统Main函数,大致如下:

        bool bCreatedNew;

       

        //Create a new mutex using specific mutex name

        Mutex m =new Mutex( false, "myUniqueName", out bCreatedNew );

        if( bCreatedNew )

            Application.Run(new yourFormName());

 

如上面编码就可以了,要注意的一点是,在给Mutex起名字的时候,不要太简单,以防止和其他程序的Mutex重复,从而达不到所预想的效果。

 

方法二:使用Process来进行

1.  首先要添加如下的namespace:

using System.Diagnostics;

using System.Reflection;

 

2.  添加如下函数:

        public static Process RunningInstance()

        {

            Process current = Process.GetCurrentProcess();

            Process[] processes = Process.GetProcessesByName(current.ProcessName);

 

            //Loop through the running processes in with the same name

            foreach (Process process in processes)

            {

                //Ignore the current process

                if (process.Id != current.Id)

                {

                    //Make sure that the process is running from the exe file.

                    if (Assembly.GetExecutingAssembly().Location.Replace("/", "//") == current.MainModule.FileName)

                    {

                        //Return the other process instance.

                        return process;

                    }

                }

            }

 

            //No other instance was found, return null.

            return null;

        }

 

3.  修改系统Main函数,大致如下:

            if( RunningInstance() == null )

                Application.Run(new yourFormName());

 

如上面编码就可以了,要注意的一点是,在判断进程模块文件名是否相等这部分的代码,是可选的。如果当前的程序在文件系统中只存在一个的话,以上的方法是可以的;否则不要删除这部分的代码。

 

对比两种方法,就效率和简便性来说,前一种方法是最好的,也是我比较喜欢的;后一种方法,速度比较慢,其次通过ProcessName去系统中查寻,有可能查出来的Process并不是我想要得,虽说在后面加了文件目录判断,但是其含有潜在的问题(前面已经说出来)。不过,第一种方法也有缺陷,就是扩展性操作不方便,例如:让程序只运行一次,如果程序已经运行,把它弹出并显示到最前面。对于此,后一种方法就很有优势了。

 

VC程序只允许运行一次 在InitInstance()中加入以下代码即可: ::CreateMutex(NULL, FALSE, _T("Global\\xxxxx.exe")); /*创建一个互斥体*/ if(ERROR_ALREADY_EXISTS == GetLastError()) { AfxMessageBox(_T("该程序只允许运行一次!")); return FALSE; 阅读详情

相关推荐

手把手教你设计MTBF加速寿命试验:从阿伦尼斯模型到卡方计算(含Excel模板)

本文详细介绍了如何设计MTBF加速寿命试验,从阿伦尼斯模型到卡方计算,帮助工程师在合理时间内获得准确的MTBF数据。通过工业电源模块的实例演示,涵盖活化能确定、温度应力设计、样本量计算及数据记录规范,并提供Excel模板实现自动化计算,显著提升测试效率。

weixin_42563415的博客 539

2021-03-12python 定时器threading.Timer

#Timer设定间隔时间执行函数,但是**只执行一次** **t = Timer(0.50,task,['我的']) #Timer(间隔秒,执行函数名,[执行函数参数])** ```python import time from threading import Timer def task(name): print(name,'现在时间:', time.ctime()) go() ...

weixin_47604030的博客 635

国产数据库迁移必看:达梦到ES的CDC方案优化全记录(含完整代码)

本文详细记录了从达梦数据库到Elasticsearch的CDC方案优化全过程,涵盖触发器方案局限性、Debezium架构优势及完整代码实现。通过Flink集成和性能调优,实现毫秒级延迟同步,显著降低数据库负载,为国产数据库迁移提供可落地的技术方案。

weixin_29079671的博客 497

System.Threading.Timer使用简单记录

System.Threading.Timer使用简单记录

alolf的博客 440

Rockit VDEC解码实战:从零构建高效视频处理流水线

本文详细介绍了Rockit VDEC硬件解码模块在RK3568/RK3588平台的应用实践,涵盖开发环境配置、MPI接口使用、码流发送模式选择、内存管理优化及多路解码系统构建。通过实战案例展示如何利用VDEC实现高效视频处理流水线,显著降低CPU占用率,提升嵌入式多媒体开发效率。

ol789012的博客 304

EL6751实战指南:从协议解析到工业现场部署

本文详细介绍了EL6751网关在工业通信协议转换中的应用,从CANopen协议解析到EtherCAT系统部署的实战指南。通过协议栈位置、数据封装方式和通信模型差异的深入分析,帮助工程师高效实现EtherCAT主站与CANopen从站设备间的无缝对接,提升工业现场通信效率。

weixin_30338481的博客 546

winform只存在一个进程处理

方法一:使用Mutex来进行 1. 首先要添加如下的namespace: using System.Threading; 2. 修改系统Main函数,大致如下: bool bCreatedNew; //Create a new mutex using specific mutex name Mutex m =ne...

weixin_30699741的博客 135

开漏输出(漏极开路输出与集电极开路输出)和推挽输出怎么判断

判断一个引脚是还是。

weixin_56838517的博客 1055

Java多线程实现方式、锁、线程池

线程与进程 进程 是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间 线程 是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行. 一个进程最少 有一个线程 线程实际上是在进程基础之上的进一步划分,一个进程启动之后,里面的若干执行路径又可以划分 成若干个线程 同步与异步 同步:排队执行 , 效率低但是安全. 异步:同时执行 , 效率高但是数据不安全. 并发与并行 并发:指两个或多个事件在同一个时间段内发生。 并行:指两个或多个事件在同一时刻发生(同时发生) Java中实现多线程

cybxh的博客 344

硬件工程师的蜗牛成长路

1、《模拟电路课程》R/L/C/继电器/光耦/二极管/三极管/MOS管磁珠/ESD/TVS/肖特基二极管/稳压二极管/保险丝/GDT/TSS/光耦/MOS/运放/BJT比较器/面板开关/按键开关/拨码开关/BUCK/LDO/电源防护器件LM5069单输出PLL/多路输出PLL/单端晶振/差分晶振/晶体(这方面不熟悉,待以后补充)1)速度传感器2)温度传感器3)倾斜角传感器4)火焰传感器5)红外传感器6)呼吸心跳采集chaunganqi1)数字隔离 电平转换芯片/磁隔离/专用隔离芯片。

caozhaokun的博客 1978

数字IC后端实战:OCC电路时钟树综合的5个关键技巧(附Synopsys工具配置)

本文深入探讨了数字IC后端设计中OCC电路时钟树综合的实战技巧。针对工具自动平衡导致的绕线拥塞和时序问题,文章提出了分段处理的核心思路,并详细阐述了通过物理隔离、分段长树策略以及Synopsys工具链(如ICC2、PrimeTime)的精准配置来优化function clk与occ clk路径的关键方法,旨在提升时序收敛性和可制造性。

jwt8token的博客 855

开启Thread线程只执行一次

代码如下 private static Thread mTaskThread = new Thread(new Runnable() { @Override public void run() { count++; System.out.println("this is time do task:" + count); } }); public static void main...

skytoby 1万+

6、线性时序逻辑到确定性自动机的翻译

本博文详细介绍了将线性时序逻辑(LTL)转化为确定性自动机的理论基础、技术方法和实际应用。内容涵盖LTL的基本运算符、确定性自动机的特点及其在模型检测中的作用,以及具体的翻译步骤与优化策略。通过实际案例展示了如何利用这一技术进行系统属性验证,并探讨了翻译过程中可能遇到的挑战及解决方案。

gpu4optimizer的博客 150

程序只运行一次并激活原来的程序

我们的程序有时候只允许运行一次,并且最好的情况是,如果程序第二次运行,就激活原来的程序。网上有很多的方法实现程序只运行一次,但对于激活原来的窗口却都不怎么好。关键就在于激活原来的程序,一般的做法是在工程开始时,打开互斥量对象,如果打不开表示程序还没有运行,创建一个互斥量对象;如果打得开表示程序已经运行了,查找程序中一个特定的窗口,一般是主窗口,然后发送一个自定义消息,主窗口在这个消息处理中激活

colin 8930

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

pyqt 程序只能运行一次

pyqt 程序只能运行一次 from PyQt5.QtNetwork import QLocalSocket, QLocalServer if __name__ == '__main__': try: app = QApplication(sys.argv) serverName = 'testEvaluatinoServer' so...

zhuoyue008的专栏 2475

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Delphi实现程序只运行一次并激活已打开的程序

unit wdRunOnce; {******************************************* * brief: 让程序只运行一次 * autor: linzhenqun * date: 2005-12-28 * email: linzhengqun@163.com * blog: http://blog.youkuaiyun.com/linzhengqun ******

抬头做人低头做事 4113

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

linux 程序只运行一次,Linux守护进程实现程序只运行一次

1.守护进程守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。2.让程序只运行一次如果让程序只运行一次,有很多方法,此处的一种方法是创建一个名字古怪的文件(保证不跟系统文件或其他文件重名),判断文件存在则让程序不再运行且提示程序正在运行,如果不存在则可以运行。3.测试代码此代码额外添加了系统LOG,记录操作的信息。#include...

weixin_42349135的博客 728

python程序只能运行一次_python如何让程序每天只运行一次

最近做了一个小程序,本来是双击直接运行的,每天需要运行一次,完成任务退出。后来怕不小心多运行一次,造成不必要的麻烦,就增加了提醒input(‘每天只能运行一次,你确定要运行吗?‘)后台设置,只有回复“是”才会运行,否则将直接退出程序。本来已经满足了基本需求,但人总是很懒惰,那个“是”我实在懒得输入了。于是给程序增加了一个验证,每次运行会验证本地一个文件,姑且叫它fuck.json这个文件中写入了一...

weixin_39692830的博客 3338

VC控制程序只运行一次效果

本文简单介绍下VC如何使一个程序一次只运行一次。 新建对话框应用程序,并且运行程序。 同时点击多次运行多个当前程序。 设置一次只运行当前程序一个。 BOOL CProgramRunOneApp::InitInstance() { AfxEnableControlContainer(); // Standard initialization /

冰点蓝欣的专栏 840

WINCE-如何只让程序运行一次

如何让一个程序只运行一次,方法很多。可通过发送消息,发送事件,检测窗口等方法。 下面介绍一种查找窗口类名和枚举窗口并且获取窗口属性的方法。   方法一、 通过FindWindow函数,找到指定窗口类名或窗口名的窗口的句柄。给每一个窗口程序都定义一个唯一的类名或者窗口名   1、  查找类名、窗口 在程序开始加入如下代码: HWND hfind = ::FindWindow(L"

芝麻软件工作室的专栏 640

程序只能运行一次

程序只能运行一次 using System; using System.Collections.Generic; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Diagnostics; using System.Reflection; namespace 程序只能

Happyflystone - 无枪狙击手 1283

让程序 只能运行一次

 原题目:怎么才能让程序只运行一次?也就是在第二次运行时能检测到已经运行了大概意思应该是程序运行过一次以后就不能再次运行了我的解决方案:让程序只运行一次: 思路:   启动程序的时候   随便向注册表里写入一些信息!   同时提取该项目的信息   若该项目已有信息,那么表示程序已经运行过一次了   .   通过这样的方法判断   .. VBScript code <!--

cike_1111的专栏 1695

VC++判断程序是否已经运行;仅运行一次

VC++判断程序是否已经运行;仅运行一次,,如上代码所示,在程序的InitInstance中,xxxxx即为程序的标识,程序运行会检测是否存在已经运行的标识;如果存在,则提示并退出;需要注意的是,不同的程序应该设置不同的值;VC++判断程序是否已经运行;

693
下一篇: 如何在MDI程序中把子窗体菜单合并到主窗体上
Knight94
博客等级 码龄25年 1013粉丝 87原创
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值