Я хочу убедиться, что работает только один экземпляр моего приложения winform. Есть ли способ, что я могу достигнуть его через Visual Studio 2008, а не делать это в коде позадиУбедитесь, что только один экземпляр приложения winform запущен
-1
A
ответ
0
статической силы Main() {
if (PriorProcess() != null)
{
MessageBox.Show("Another instance of the app is already running.");
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
public static Process PriorProcess()
// Returns a System.Diagnostics.Process pointing to
// a pre-existing process with the same name as the
// current one, if any; or null if the current process
// is unique.
{
Process curr = Process.GetCurrentProcess();
Process[] procs = Process.GetProcessesByName(curr.ProcessName);
foreach (Process p in procs)
{
if ((p.Id != curr.Id) &&
(p.MainModule.FileName == curr.MainModule.FileName))
return p;
}
return null;
}
1
в C# вы можете сделать что-то подобное в вашем Program.cs
static class Program
{
public static FormMain MainForm = null;
/// <summary>
/// The main entry point for the application.
/// </summary>
static Mutex mutex = new Mutex(true, "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE80}");
[STAThread]
static void Main()
{
if (mutex.WaitOne(TimeSpan.Zero, true))
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
MainForm = new FormMain();
Application.Run(MainForm);
mutex.ReleaseMutex();
}
else
{
// send our Win32 message to make the currently running instance
// jump on top of all the other windows
NativeMethods.PostMessage(
(IntPtr)NativeMethods.HWND_BROADCAST,
NativeMethods.WM_SHOWME,
IntPtr.Zero,
IntPtr.Zero);
}
}
}
и в вашем MainForm поставить этот
protected override void WndProc(ref Message m)
{
if (m.Msg == NativeMethods.WM_SHOWME)
{
ShowMe();
}
base.WndProc(ref m);
}
private void ShowMe()
{
if (WindowState == FormWindowState.Minimized)
{
WindowState = FormWindowState.Normal;
}
// get our current "TopMost" value (ours will always be false though)
bool top = TopMost;
// make our form jump to the top of everything
TopMost = true;
// set it back to whatever it was
TopMost = top;
}
+0
У меня есть решение. благодаря –
Смежные вопросы
- 1. Убедитесь, что запущен только один экземпляр класса
- 2. Убедитесь, что один экземпляр приложения в Linux
- 3. Убедитесь, что только один экземпляр обработчика событий запущен за один раз
- 4. Убедитесь, что процесс запущен
- 5. Только один экземпляр приложения
- 6. Unity - убедитесь, что только один экземпляр выполняет заданную команду
- 7. wxPython: убедитесь, что открыт только один экземпляр панели
- 8. Как обеспечить только один экземпляр приложения winform C#
- 9. Только один экземпляр приложения pyqt4
- 10. Убедитесь, что скрипт python все еще запущен
- 11. Имея только один экземпляр приложения, в то время
- 12. Убедитесь, что переменная установлена только один раз
- 13. Убедитесь, что делегат выполняется только один раз
- 14. Убедитесь, что поток запущен winapi C++
- 15. Как вызвать метод формы после проверки только один экземпляр запущен
- 16. Убедитесь, что только один делегат связан с событием?
- 17. Убедитесь, что рисунок Winform выполнен правильно?
- 18. Убедитесь, что один экземпляр скрипт работает в фоновом режиме
- 19. Убедитесь, что один экземпляр окна Telerik на страницу/запрос
- 20. Убедитесь, что один экземпляр приложения WPF: сложность восстановления уже запущенного приложения на переднем плане
- 21. node cluster: гарантировать, что только один экземпляр функции запущен за один раз
- 22. Java - позволяют только один раз экземпляр приложения
- 23. Как запустить только один экземпляр приложения
- 24. Обнаружение, если другой экземпляр приложения уже запущен
- 25. Как включить только один экземпляр моего приложения
- 26. Разрешить только один экземпляр приложения Chromium
- 27. Убедитесь, что Singleton вызывает запрос db только один раз
- 28. Начать только один экземпляр приложения на основе диалога MFC
- 29. Как убедиться, что экземпляр Google Cloud Compute запущен и запущен
- 30. Убедитесь, что только один пользователь редактирует форму в приложении Rails
Это является встроенной функцией VB.NET. Если вы используете другой язык, вам придется написать несколько строк кода. –