Mutex вернуть из свернутого - PullRequest
0 голосов
/ 04 июля 2018

Я использую мьютекс для проверки одного экземпляра за раз. Это работает, но чтобы быть идеальным, мне нужно исправить одну ошибку. Если программа находится в свернутом состоянии, она не восстановится самостоятельно после того, как я нажму Ok. Есть идеи?

Это в Program.cs:

if (process.Id != current.Id)
{
    SetForegroundWindow(process.MainWindowHandle);
    MessageBox.Show(new Form1 { TopMost = true }, "Application is already running!");

    Form1 f1 = new Form1();

    f1.WindowState = FormWindowState.Normal; // dont work
    f1.BringToFront();                       // dont work
    f1.Focus();                              // dont work

    break;
}

1 Ответ

0 голосов
/ 04 июля 2018

создать метод расширения:

using System.Runtime.InteropServices;

namespace System.Windows.Forms
{
    public static class Extensions
    {
        [DllImport( "user32.dll" )]
        private static extern int ShowWindow( IntPtr hWnd, uint Msg );

        private const uint SW_RESTORE = 0x09;

        public static void Restore( this Form form )
        {
            if (form.WindowState == FormWindowState.Minimized)
            {
                ShowWindow(form.Handle, SW_RESTORE);
            }
        }
    }
}

затем используйте form.Restore() в своем коде.

...