.Net 中用查找窗体标题的方法检查WinForm应用是否重复运行

在设计WinForm应用时,通常需要确保程序不能多次运行。本文介绍了一种简单的方法,即通过查找窗体标题来判断是否已运行。尽管此方法可能存在主窗体未及时创建导致的漏洞,一般情况下能有效防止重复启动。互斥量被认为是更优的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计桌面应用程序时往往只希望该程序在桌面中只能运行一次。

本文给出一个通过判断窗口标题来判断桌面应用是否重复运行,这种方法比较简单,

但不是最好的,如果第一个应用的主窗体还没来得及创建第二个应用就起来了,就可

能同时起两个窗体。但一般情况下不会有这个问题。最好的方法还是通过互斥量来判断。


using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace 优快云Test
{
    
static class Program
    
{

        [DllImport(
"User32.dll")]
        
private static extern IntPtr FindWindow(String lpClassName, String lpWindowName);

        
/// <summary>
        
/// 应用程序的主入口点。
        
/// </summary>

        [STAThread]
        
static void Main()
        
{
            IntPtr handle 
= FindWindow(null"Form1"); //查找和主窗体标题相同的窗体,这里假设主窗体标题为Form1
            if (handle != (IntPtr)0)
            
{
                
return;
            }


            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(
false);
            Application.Run(
new Form1());
        }

    }

}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值