.exe文件的进程问题

conghui 2007-06-02 01:52:12
我用c#写了个应用程序,我怎么在系统中只启动一次呀,在main中如何写呀,因为现在的情况是,只要双击生成的exe文件就打开一个进程,这样会打开多个进程的,我想如果进程存的话,就将原来的进程杀掉,具体如何做呀?
...全文
229 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
catfish110 2008-12-04
  • 打赏
  • 举报
回复
不错 二楼的哥们 我也是这么做的 找的代码 不是很理解 [System.Runtime.InteropServices.DllImport( "kernel32 ")]
这种用法
commandosvvv 2007-06-11
  • 打赏
  • 举报
回复
这个问题看得兴起,我也曾经遇到相同问题,当时采用的办法是调用进程名,判断是否相同。
这样解决有个问题,是如果*.exe文件名被改,那么相应的进程名也被改,结果出现重复启动。
因为是给日本人的东西,对付过去了,呵呵。

不知道qyfjl(Try to improve my skills.) 兄弟的做法能否避免这样的问题?
qinjingfeng 2007-06-11
  • 打赏
  • 举报
回复
留名,学习!
cq_lqj 2007-06-02
  • 打赏
  • 举报
回复
用“互斥”(C#有这样的类Mutex,可以不用API)是一种好方法,代码比较少。但缺少后续处理。

楼主的“只要双击生成的exe文件就打开一个进程,这样会打开多个进程的,我想如果进程存的话,就将原来的进程杀掉”,这种处理不是很理想。

最好这样处理:只要双击生成的exe文件,如果进程存的话,第二个进程不再运行,同时将第一次运行的进程正常显示到前台,而不是将原来的进程杀掉。

立即成为编程经验丰富的程序员不是梦,详见:http://www.psec.net.cn
冬你个冬 2007-06-02
  • 打赏
  • 举报
回复
能不能加点注解用来做什么用啊
冬你个冬 2007-06-02
  • 打赏
  • 举报
回复
好长啊
看得头晕
vshake 2007-06-02
  • 打赏
  • 举报
回复
如果不想用API
可以直接用Mutex类
CruelYoung123 2007-06-02
  • 打赏
  • 举报
回复
不错不错...楼上的.. 我试试看.
qyfjl 2007-06-02
  • 打赏
  • 举报
回复
可以用互斥.
using System.Runtime.InteropServices;
#region 让程序只能运行一次
/// <summary>
/// 让程序只能运行一次
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public class SECURITY_ATTRIBUTES
{
public int nLength;
public int lpSecurityDescriptor;
public int bInheritHandle;
}

[System.Runtime.InteropServices.DllImport("kernel32")]
private static extern int GetLastError();
[System.Runtime.InteropServices.DllImport("kernel32")]
private static extern IntPtr CreateMutex(SECURITY_ATTRIBUTES lpMutexAttributes, bool bInitialOwner, string lpName);
[System.Runtime.InteropServices.DllImport("kernel32")]
private static extern int ReleaseMutex(IntPtr hMutex);
const int ERROR_ALREADY_EXISTS = 0183;

#endregion
/// <summary>
/// 程序启动
/// </summary>
[STAThread]
static void Main()
{
//设置程序只能运行一个
IntPtr hMutex;
hMutex = CreateMutex(null, false, "ERPMS_Client");
if (GetLastError() != ERROR_ALREADY_EXISTS)
{
//TODO启动程序
}
else
{
MessageBox.Show("*****系统 已经运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
ReleaseMutex(hMutex);
}
}

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧