7
A
回答
8
Scott Hanselman answers在您的问题的细节。
4
这是我目前在应用程序的Program.cs文件中做的。
// Sets the window to be foreground
[DllImport("User32")]
private static extern int SetForegroundWindow(IntPtr hwnd);
// Activate or minimize a window
[DllImportAttribute("User32.DLL")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int SW_RESTORE = 9;
static void Main()
{
try
{
// If another instance is already running, activate it and exit
Process currentProc = Process.GetCurrentProcess();
foreach (Process proc in Process.GetProcessesByName(currentProc.ProcessName))
{
if (proc.Id != currentProc.Id)
{
ShowWindow(proc.MainWindowHandle, SW_RESTORE);
SetForegroundWindow(proc.MainWindowHandle);
return; // Exit application
}
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
catch (Exception ex)
{
}
}
0
阿库,这是一个很好的资源。我回答了一个类似于这个问题的问题。你可以检查我的answer here。尽管这是用于WPF的,但您可以在WinForms中使用相同的逻辑。
3
您可以使用这种检测,并在其后激活您的实例:
// Detect existing instances
string processName = Process.GetCurrentProcess().ProcessName;
Process[] instances = Process.GetProcessesByName(processName);
if (instances.Length > 1)
{
MessageBox.Show("Only one running instance of application is allowed");
Process.GetCurrentProcess().Kill();
return;
}
// End of detection
+0
谢谢,我真的很喜欢你的解决方案。 – Sharique 2010-10-27 07:07:55
相关问题
- 1. 单实例应用程序 - 激活窗口 - 可可
- 2. 激活窗口/应用程序
- 3. PHP - 激活进程的多个实例
- 4. 窗体第一次显示时,Windows窗体应用程序不会始终激活激活事件。
- 5. 应用程序激活
- 6. qt应用程序激活
- 7. 使用Applescript有选择地激活一个应用程序的实例与两个正在运行的实例
- 8. 主机一个窗口内的WPF应用程序窗体应用程序
- 9. 尝试运行第二个实例时激活隐藏的WPF应用程序
- 10. 多个应用程序窗口激活不能正常工作
- 11. 单个应用程序实例不工作的WPF互斥体
- 12. 显示窗口没有激活(让应用程序在它下面激活)
- 13. 通过NSRunningApplication实例获取应用程序的主窗口
- 14. 单个SWF应用程序实例。 AS3
- 15. 单个实例应用程序AbandonedMutexException
- 16. VB.Net WPF单实例应用程序,第一个新实例打开窗口
- 17. 需要激活子窗体
- 18. 重新激活以前激活的窗口/程序applescript?
- 19. 激活另一个Visio实例的窗口
- 20. 计数C#WPF窗体应用程序的实例数
- 21. 如何在主窗体仍然响应时实例化表单
- 22. 如何激活C#Windows窗体应用程序中的拼写检查?
- 23. 如何激活外部应用程序的窗口
- 24. ALT-TAB总是激活主窗口中的WPF应用程序与多个拥有的窗口
- 25. 在窗口点击禁用应用程序激活
- 26. 根据应用程序的状态激活飞溅活动或主要活动
- 27. Mdi子窗体单实例
- 28. 拦截Ninject实例激活?
- 29. 从c#应用程序问题创建窗体实例?
- 30. 应用程序主要实体命名
其实我学到卖出书这一招了。但斯科特的文章只是我的书签中的座位:) – aku 2008-09-09 13:50:06