C#让windows程序只运行一次 [转]

C#开发Windows窗体应用程序的步骤 使用C#开发应用程序时,一般包括创建项目、界面设计、设置属性、编写程序代码、保存项目、程序运行等6个步骤。 1.创建项目 在Visual Studio2017开发环境中选择“文件”→“新建”→“项目”菜单,弹出“新建项目”对话框,如图8.1所示。 图8.1  “新建项目”对话框 选择“Windows窗体应用(.NET Framework)”、输入项目的名称、选择保存路径,然后单击“ 阅读详情
方法一:使用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并不是我想要得,虽说在后面加了文件目录判断,但是其含有潜在的问题(前面已经说出来)。不过,第一种方法也有缺陷,就是扩展性操作不方便,例如:让程序只运行一次,如果程序已经运行,把它弹出并显示到最前面。对于此,后一种方法就很有优势了。
C#中如何以管理员身份权限运行程序的方法 在写代码的时候程序需要以管理员的身份运行,我找到了以下两种方式,友情提示:第一种方式简单便捷,推荐 通过添加应用程序清单文件 右键你的项目 -> 添加 -> 新建项 -> “应用程序清单文件”,这个应用程序清单文件在最下方,需要一直拉到最下面才能找到 添加后,打开这个文件,然后找到大约18行或者19行的样子,将level后面的字符串修改如下 <requeste... 阅读详情

相关推荐

c# 通过Windows服务启动外部程序

1. 新建一个Windows服务应用程序    创建项目——》Visual C# 左侧的"+"——》Windows ——》Windows 服务(右侧模板)——》输入名称,确定创建项目 2. 设置Windows服务的属性(Windows服务里没有窗体,所以点击左侧设计器里空白的地方即可在右侧属性栏里看到属性)    这里属性是控制服务器是否可以停止,暂停,继续等等的操作。根据需要选择

daming_ocean的专栏 1万+

Qt程序只能执行一次

Qt中保证程序只能执行一次

chen_24的博客 1100

C#程序以管理员权限运行

在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无法对系统目录、系统注册表等可能影响系统正常运行的设置进行写操作。这个机制大大增强了系统的安全性,但对应用程序开发者来说,我们不能强迫用户去关闭UAC,但有时我们开发的应用程序又需要以 Administrator 的方式运行,如何实现这样的功能呢?下面演示 C# 程序如何实现提示用户以管理员权限运行。

LongtengGensSupreme博客 2914

qt程序设置同时只能运行一个,避免重复打开

设置qt程序只能打开一个,避免重复打开

WMT1520的博客 3845

C# 检测程序是否已经运行

写了个工具类库,因为基本上每个程序都会用到。 直接上码: using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; namespace ToolsLib { public class CommanTool { public sta

THREEK的专栏 4340

基于C#的汉语转拼音小程序开发

本文还有配套的精品资源,点击获取 简介:“汉语转拼音小程序 C#”是一款使用C#语言开发的应用程序,旨在将汉字转换为拼音。该程序在VS2005开发环境下构建,适用于搜索引擎优化、文本分析和语音识别等中文处理场景。它依赖于汉字编码转换、拼音库、多音字处理、声调处理和性能优化等技术,具备直观的Windows Forms用户界面。本程序是学习C#编程和中文信息处理技术的实践案例。...

weixin_42598278的博客 799

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

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

trumf的专栏 1219

QtSingleApplication实现软件只能启动一次

QtSingleApplication实例,实现Qt程序实现启动一次

QT笔记:同类型程序只能运行一个

由于NSIS实现自定义界面,以及把安装包和升级包合并太过复杂,在各种尝试失败之后决定自己写安装包和卸载包。 原本项目中已经有一个让程序只运行一次的代码,使用QSystemSemaphore和QSharedMemory实现的。 QSystemSemaphore sema("Key",1,QSystemSemaphore::Open); sema.acquire();//在临界区操作共享内存 SharedMemory QSharedMemory mem("Object");//全局

恩小习 是一只程序猿 1029

手把手教你用RMII接口配置以太网PHY芯片(附YT8512实战代码)

本文详细介绍了如何使用RMII接口配置以太网PHY芯片,以国产YT8512为例,提供从硬件设计到软件驱动的全流程实战指南。内容包括RMII接口技术解析、YT8512硬件设计要点、驱动开发实战代码及常见问题排查,帮助开发者快速实现以太网通信功能。

mac99的博客 995

恶意代码实验3:Word宏病毒实验

只要下次打开这个word文档,就会执行以上代码,并将自身复制到Normal.dot(word文档的公共模板)和当前文档的ThisDocument中,同时改变函数名(模板中为Document_Close,当前文档为Document_Open),此时所有的word文档打开和关闭时,都将运行以上的病毒代码,可以加入适当的恶意代码,影响word的正常使用,本例中只是简单的跳出一个提示框。回答不正确三次,即可自动跳出病毒程序,但那时已经出现几十个文档。1、打开的宏编辑器如图所示,即可编写病毒代码。

qq_63949327的博客 6505

c#: 设置程序只能运行一次

环境: window 10 .net framework4.5 winform 参照: C#设置一个winform程序一次只能运行一个 直接看代码: using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.InteropSe...

火焰 2704

ROS2 Humble + TurtleBot4仿真环境搭建与避坑实战

本文详细介绍了ROS2 Humble与TurtleBot4仿真环境的搭建与避坑实战,包括环境配置、依赖安装、仿真调试和性能优化等关键步骤。通过保姆级教程和实用技巧,帮助开发者快速搭建稳定的机器人仿真环境,提升开发效率。特别推荐使用Ubuntu 22.04原生系统以避免常见问题。

weixin_30897233的博客 399

c#让windows程序只运行一次

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

凌云工作室 597

基于IC动态加权的机器学习多因子选股策略:从模型融合到实战回测

在量化投资领域,多因子选股模型通过挖掘市场数据中的有效信号来预测股票收益。其核心原理在于利用统计学与机器学习算法,从海量因子中识别出与未来收益具有稳定相关性的特征。这一技术的核心价值在于将主观投资决策转化为系统化、可重复的客观过程,从而在控制风险的前提下追求超额收益。其典型应用场景包括股票阿尔法策略构建、Smart Beta产品设计以及资产配置中的股票筛选环节。本文聚焦于如何通过信息系数(IC)这一关键指标,动态融合Ridge回归、MLP神经网络和随机森林等多个预测模型,构建一个能够自适应市场风格轮动的选股

weixin_34216614的博客 451

北航论文模板:解决XeLaTeX中Font shape'TU/SimSun(1)/b/n' undefined(font) using 'TU/SimSun(1)/m/n' instead

北航论文模板:解决XeLaTeX中Font shape ‘TU/SimSun(1)/b/n’ undefined(font) using ‘TU/SimSun(1)/m/n’ instead 问题 问题描述: 在使用北航论文模板时,产生了warning:Font shape 'TU/SimSun(1)/b/n' undefined(font) using 'TU/SimSun(1)/m/n' i...

qq_39560620的博客 1万+

【转】【C#】Windows服务运行exe程序

在“Windows服务”中,上述代码还是可以运行exe程序的,但是我们看不到。在“控制台应用程序”中,我们可以看到被执行的exe程序,但是到了“Windows服务”中,该exe变成了后台执行,无法与用户进行交互。原因如下:  默认情况下,服务是运行在session0下的,与普通的应用程序不在一个session,所以不能互动,但是我们可以利用函数“CreateProcessAsUser”来创建应用...

kakarrot2009的专栏 844

【光子AI / Photon.AI】manus 通用 Agent 的实现核心技术原理与应用

摘要 Manus是一款由国内团队开发的通用AI Agent,其核心技术原理基于多智能体协作架构、云端全能沙箱、规划-执行-反思循环等系统工程方法。与传统的对话式AI不同,Manus能够在独立的Linux虚拟机环境中自主规划并执行复杂任务,通过编写和运行代码来解决问题,具备强大的纠错能力和工具使用能力。 核心应用场景包括深度行业研究、自动化办公、生活助理、辅助编程和跨平台信息整合等。Manus的工程化落地优势体现在沙箱环境、多智能体调度和容错机制等方面,使其能够完成需要多步骤操作和多种工具调用的复杂任务,将A

AI天才研究院 667

C# 创建 Windows 应用程序教程

在 C# 编程领域中,创建 Windows 应用程序是一项基础且重要的技能。通过 C#,开发者能够构建出功能丰富、用户体验良好的桌面应用。接下来,我们将详细介绍如何使用 C# 创建 Windows 应用程序。

zsnandzmn的博客 1552

国科大作业考试资料《人工智能原理与算法》2024新编-第二次作业整理

1、对于下列活动,分别给出任务环境的PEAS描述, 并按2.3.2节列出的性质进行分析: 3、为图2.2中描述的吸尘器世界实现一个可以进行性能度量的环境模拟器。你的实现是必须是模块化的,以使传感器、执行器和环境特征(大小、形状、灰尘放置等)便于修改。 4、实现上述题目真空吸尘器环境中的简单反射Agent。用所有可能的初始灰尘分布和Agent位置,运行环境模拟器和Agent。记录Agent在每种情况下的性能评分和总体平均评分。

MatsumotoChrikk 1187

爬虫进阶必备:深入理解requests.Session(),提升爬虫效率与稳定性

前两天,有个朋友跟我吐槽,说自己写了个爬虫爬取某个电商网站的商品信息,刚开始跑得好好的,爬了大概几百页之后,突然就开始报错了。HTTP状态码一会儿429,一会儿403,最离谱的是有些页面明明登录了却显示未登录状态。他排查了半天也没找到原因,最后把代码发给我看。 我扫了一眼代码,发现一个典型问题:他每次请求都新建一个requests.Session(),甚至有些请求直接用了requests.get()。这就好比每次进超市都要重新注册会员,每次都重新跟服务器“握手”,不翻车才怪。 其实,这就是我们今天要聊的

2201_76125261的博客 1228

[第一个 C# 程序]-C# 程序可以运行在任何一台可以打游戏的 Windows 机器上

.NET 框架 任何一台可以打现代游戏的 Windows 都可以运行 c# 程序 如何查看 .NET 框架的版本 在资源管理器查看产品信息 查看系统安装软件的信息 第一个 C# 程序 cmd 中使用 csc 编译器编译 .cs 源文件 为 csc 编译器添加环境变量 永久设置系统环境变量............

燃吹 U 客帮 1729

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【转】如何设置C#程序在Windows 7 Vista下以管理员权限运行

转自: 如何设置C#程序在Windows 7 Vista下以管理员权限运行 这个问题主要针对对于有些操作需要权限的:比如修改注册表,还有修改服务启动类型等等。 如果不赋予管理员权限,这些操作可能会报错或者无效。如何让你的程序在Window 7 vista下以管理员权限运行呢?这个只需要修改项目属性的app.manifest. app.mainfest默认是不存在的,可以通过下...

dishuangqing3232的博客 129

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

关于在XP上运行C#程序几点注意

虽然XP已经断更多年,但是目前一些工控机仍然会用XP,因此本文主要介绍了XP下运行C#程序的相关内容。

郝伟老师的博客——大数据、并行计算与人工智能时代 2089

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

如何运行程序 (C#) - Visual Studio (Windows) | Microsoft Learn

如何运行程序 (C#) - Visual Studio (Windows) | Microsoft Learn

2501_92589693的博客 970
上一篇: 用C#和WMI获取逻辑驱动器详细信息
下一篇: DTD XHTML 1.0 Transitional 和 Dtd HTML 4.0 Transitional
Devillyd
博客等级 码龄23年 58粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值