当前位置:首页 开发语言 正文

只允许运行一个实例

2011年06月05日 | 作者: 米豆网 - 1000seo | 分类: 开发语言 | 

我们在在做软件时,为了需要可能需要只允许启动当前程序的一个实例。
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Reflection;

namespace SmsSoft
{
static class Program
{

///

/// 该函数设置由不同线程产生的窗口的显示状态。
///

/// 窗口句柄 /// 指定窗口如何显示。查看允许值列表,请查阅ShowWlndow函数的说明部分。 /// 如果函数原来可见,返回值为非零;如果函数原来被隐藏,返回值为零。
[DllImport(“User32.dll”)]
private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
///

/// 该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建前台窗口的线程分配的权限稍高于其他线程。
///

/// 将被激活并被调入前台的窗口句柄。 /// 如果窗口设入了前台,返回值为非零;如果窗口未被设入前台,返回值为零。
[DllImport(“User32.dll”)]
private static extern bool SetForegroundWindow(IntPtr hWnd);
private const int WS_SHOWNORMAL = 1;
///

/// The main entry point for the application.
///

[STAThread]
static void Main()
{
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Process instance = RunningInstance();
if (instance == null)
{
//Form1 frm = new Form1();
Application.Run(new Form1());
}
else
{
HandleRunningInstance(instance);
}
}
///

/// 获取正在运行的实例,没有运行的实例返回null;
///

public static Process RunningInstance()
{
Process current = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName(current.ProcessName);
foreach (Process process in processes)
{
if (process.Id != current.Id)
{
if (Assembly.GetExecutingAssembly().Location.Replace(“/”, “\\”) == current.MainModule.FileName)
{
return process;
}
}
}
return null;
}

///

/// 显示已运行的程序。
///

public static void HandleRunningInstance(Process instance)
{
ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL); //显示,可以注释掉
SetForegroundWindow(instance.MainWindowHandle); //放到前端
}

}
}

本文固定链接:http://www.1000seo.com/soft/62
本文章由 米豆网 - 1000seo 于2011年06月05日发布在开发语言分类下,您可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
+复制链接 转载请注明:只允许运行一个实例-米豆网
关键字:,

好文章就要一起分享!

更多

发表评论

你的大名(必填)

你的邮箱(必填)

你的网站(选填)

评论内容(必填)

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif