1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Single Instance Application

Тема в разделе ".NET - программирование", создана пользователем NikSoft, 8 ноя 2006.

  1. NikSoft

    NikSoft Гость

    Репутация:
    0
    Следующий код решает задачу

    Код:
    using System;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    
    namespace Singleton
    {
    static class Program
    {
    const int showMinimized = 2;
    const int showRestore  = 9;
    
    [DllImport("User32.dll")]
    public static extern int ShowWindowAsync(IntPtr hWnd, int swCommand);
    
    [STAThread]
    static void Main()
    {
    Process[] numberOfProcesses = Process.GetProcessesByName("Singleton");
    
    if (numberOfProcesses.Length == 1)
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
    }
    else
    {
    ShowWindowAsync(numberOfProcesses[0].MainWindowHandle, showMinimized);
    ShowWindowAsync(numberOfProcesses[0].MainWindowHandle, showRestore);
    }
    }
    }
    }
    Здесь "Singleton" имя приложения
     
  2. Electro

    Electro Гость

    Репутация:
    0
    Уважаемый NikSoft большое спасибо, за код.
    буду должен
    Я сделал так :
    Код:
    using System;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    
    namespace WinData
    {
    static class Program
    {
    /// </summary>
    [STAThread]
    static void Main()
    {
    //процесс -> namespace
    Process[] numberOfProcesses = Process.GetProcessesByName("WinData");
    if (numberOfProcesses.Length <= 1)
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
    }
    }
    }
    }
    В принципе работает. Спасибо!
     
Загрузка...

Поделиться этой страницей