怎样让程序保持一个进程(实例)?

itakeblue 2009-12-21 02:21:02
就是如果用户多次打开同一个程序,程序会自动检测是否已经有实例在运行中,如果有的话第二个进程就自动结束,并且发送命令将第一个进程弹到最前面来。

谢谢!
...全文
131 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
csjtxy 2010-05-11
  • 打赏
  • 举报
回复
单实例
itakeblue 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 asdfy 的回复:]
项目——属性——生成单个实例应用程序
不知道你说的是不是这个意思。
[/Quote]
谢谢,原来内置有这样的方法
myrroom 2009-12-21
  • 打赏
  • 举报
回复
实现单实例的方法有很多啊
wuyq11 2009-12-21
  • 打赏
  • 举报
回复
DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
放到前端
wuyq11 2009-12-21
  • 打赏
  • 举报
回复
Mutex mutex = new Mutex(true, "", out IsRunning);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (IsRunning)
{
Application.Run(new Form1());
}
龙宜坡 2009-12-21
  • 打赏
  • 举报
回复
wtnu200 2009-12-21
  • 打赏
  • 举报
回复
up,我也想知道。
古今多少事 2009-12-21
  • 打赏
  • 举报
回复
项目——属性——生成单个实例应用程序
不知道你说的是不是这个意思。
itakeblue 2009-12-21
  • 打赏
  • 举报
回复
顶啊
itakeblue 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lcl_data 的回复:]
C#实现确保单进程类

这里有一个方法

[/Quote]

我只会 vb.net。。

       Dim current As Process


current = Process.GetCurrentProcess
Dim processes As Process() = Process.GetProcessesByName(current.ProcessName)

'查找相同名的进程
Dim tmpProcess As Process
For Each tmpProcess In processes
'忽略当前进程
If tmpProcess.Id <> current.Id Then
'确认相同名的进程运行位置是否相同
If Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", "\") = current.MainModule.FileName Then
'返回其它的运行实例
MsgBox("yes")

End If
End If
Next tmpProcess
'没有其它实例,返加空值
MsgBox("no")


这个代码可以检测是否重复运行,但怎么样 能发送命令将第一个进程弹到最前面来呢?
silentwins 2009-12-21
  • 打赏
  • 举报
回复
单件模式~!
十八道胡同 2009-12-21
  • 打赏
  • 举报
回复
C#实现确保单进程类

这里有一个方法

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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