C#程序多用户只启动一个进程的方法[转载]
2009-12-30 16:06
603 查看
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://greenlandy.blogbus.com/logs/14388828.html
Code Snippet [STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var wb = new Form1();
Process current = Process.GetCurrentProcess();
bool newinstance = true;
Process[] processes = Process.GetProcessesByName(current.ProcessName);
//?历正在有相同名字??的例程
foreach (Process process in processes)
{
//忽略现有的例程
if (process.Id != current.Id)
{
//确保例程从EXE文件??
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
{
//?回另一个例程实例
current = process;
newinstance = false;
break;
}
}
}
if (newinstance)
{
Application.Run(wb);
}
else
{
ShowWindowAsync(current.MainWindowHandle, 1);
//?置真实例程为foreground window
SetForegroundWindow(current.MainWindowHandle);
}
}
引入这两个API函数
Code Snippet [DllImport("User32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
http://greenlandy.blogbus.com/logs/14388828.html
Code Snippet [STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var wb = new Form1();
Process current = Process.GetCurrentProcess();
bool newinstance = true;
Process[] processes = Process.GetProcessesByName(current.ProcessName);
//?历正在有相同名字??的例程
foreach (Process process in processes)
{
//忽略现有的例程
if (process.Id != current.Id)
{
//确保例程从EXE文件??
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
{
//?回另一个例程实例
current = process;
newinstance = false;
break;
}
}
}
if (newinstance)
{
Application.Run(wb);
}
else
{
ShowWindowAsync(current.MainWindowHandle, 1);
//?置真实例程为foreground window
SetForegroundWindow(current.MainWindowHandle);
}
}
引入这两个API函数
Code Snippet [DllImport("User32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
相关文章推荐
- C#程序多用户只启动一个进程的方法[转载]
- C#程序多用户只启动一个进程的方法
- C#程序多用户只启动一个进程的方法
- c#程序强制关闭所有进程方法(转载)
- C#启动一个外部程序(方法1) - WinExec
- c#程序强制关闭所有进程方法(转载)
- WinCE C#程序,控制启动时仅仅能启动一个程序,使用相互排斥量来实现,该实现方法測试通过
- 简单掌握Windows中C#启动外部程序进程的方法
- C#启动一个外部程序的方法-ShellExecute
- C#只允许启动一个WinFrom进程的两种方法
- 在VC中启动另外一个程序(.exe、...)方法 (转载)
- c#的Process启动另一个进程作为程序的一个界面
- [导入]在C#中启动另一个程序的实现方法[转载]
- JAVA调用系统命令或可执行程序--返回一个Runtime运行时对象,然后启动另外一个进程来执行命令
- 在服务中创建用户进程的方法(C#版)
- 总结C#启动外部程序的几种方法
- 解决C#程序只允许运行一个实例的几种方法详解
- C# 启动外部程序的几种方法
- C#实现一个用于开机启动其他程序的Windows服务
- java程序在一个电脑上只启动一次,只开一个进程