博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断程序是否已经启动的两种方法
阅读量:5265 次
发布时间:2019-06-14

本文共 1626 字,大约阅读时间需要 5 分钟。

判断程序是否已经启动的两种方法
1.调用非托管C++ dll中的方法。
首先引入System.Runtime.InteropServices命名空间。System.Runtime.InteropServices 命名空间提供各种各样支持 COM interop 及平台调用服务的成员,使程序可以与非托管代码进行交互操作。然后导入C++ dll        
[DllImport("user32.dll")]
internal static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
具体代码如下:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace MyTest
{
    static class Program
    {
        [DllImport("user32.dll")]
        internal static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            IntPtr handle = FindWindow(null, "MyWindow");
            if (!System.IntPtr.Zero.Equals(handle))
            {
                MessageBox.Show("程序已经启动");
                return;
            }
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
     }
}
2.应用System.Diagnostics命名空间下的相关方法
System.Diagnostics命名空间提供用于访问系统进程,调试应用程序和跟踪代码执行情况的类
代码如下:
namespace MyTest
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            if (IsExisttExe())
            {
                MessageBox.Show("程序已经启动");
                return;
            }
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
        private static bool IsExisttExe()
        {
            bool exist = false;
            Process[] p = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(Application.ExecutablePath));
            if (p != null && p.Length > 1)
            {
                exist = true;
            }
            return exist;
        }
    }
}

转载于:https://www.cnblogs.com/LouisZhu/archive/2010/06/01/1749501.html

你可能感兴趣的文章
CF461B Appleman and Tree
查看>>
CF219D Choosing Capital for Treeland
查看>>
杂七杂八的小笔记本
查看>>
51Nod1353 树
查看>>
CF1215E Marbles
查看>>
.net Core 图片验证码 基于SkiaSharp实现
查看>>
fish redux 个人理解
查看>>
java 笔记一些
查看>>
BZOJ2339 HNOI2011卡农(动态规划+组合数学)
查看>>
octave基本操作
查看>>
排球计分程序重构(一)
查看>>
axure学习点
查看>>
WPF文本框只允许输入数字[转]
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
第一个项目--用bootstrap实现美工设计的首页
查看>>
使用XML传递数据
查看>>
TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
查看>>
基于CMMI的敏捷开发过程文档裁剪
查看>>
0925 韩顺平java视频
查看>>
软件需求规格说明书
查看>>