Здравствуйте! Подскажите, как в с# запретить запуск нескольких копий программы? Ну что-бы программа запустилась, а если второй раз по экзешнику ткнуть, то чтоб ничего бы не происходило. Кажется в давних студиях я находил данную опцию, а в 2008 не найду..
Спасибо!
Re: Как запретить запуск нескольких копий программы?
Здравствуйте, zaabda, Вы писали:
Z>Здравствуйте! Подскажите, как в с# запретить запуск нескольких копий программы? Ну что-бы программа запустилась, а если второй раз по экзешнику ткнуть, то чтоб ничего бы не происходило. Кажется в давних студиях я находил данную опцию, а в 2008 не найду.. Z>Спасибо!
Мьютекс?
Re: Как запретить запуск нескольких копий программы?
От:
Аноним
Дата:
12.01.10 10:36
Оценка:
Здравствуйте, zaabda, Вы писали:
Z>Здравствуйте! Подскажите, как в с# запретить запуск нескольких копий программы? Ну что-бы программа запустилась, а если второй раз по экзешнику ткнуть, то чтоб ничего бы не происходило. Кажется в давних студиях я находил данную опцию, а в 2008 не найду.. Z>Спасибо!
Здравствуйте, Codechanger, Вы писали:
C>Здравствуйте, zaabda, Вы писали:
Z>>Здравствуйте! Подскажите, как в с# запретить запуск нескольких копий программы? Ну что-бы программа запустилась, а если второй раз по экзешнику ткнуть, то чтоб ничего бы не происходило. Кажется в давних студиях я находил данную опцию, а в 2008 не найду.. Z>>Спасибо!
C>Мьютекс?
Дада.. спасибо, уже нашел!
Re: Как запретить запуск нескольких копий программы?
Здравствуйте, zaabda, Вы писали:
Z>Здравствуйте! Подскажите, как в с# запретить запуск нескольких копий программы? Ну что-бы программа запустилась, а если второй раз по экзешнику ткнуть, то чтоб ничего бы не происходило. Кажется в давних студиях я находил данную опцию, а в 2008 не найду.. Z>Спасибо!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Diagnostics;
namespace WindowsFormsApplication1
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1)
{
MessageBox.Show("Один экземпляр программы уже запущен", "Программа уже запущена", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Re[2]: Как запретить запуск нескольких копий программы?
4> if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1)
Вы в курсе, что имена процессов могут совпадать для разных приложений?
Re[3]: Как запретить запуск нескольких копий программы?
Здравствуйте, zaabda, Вы писали:
C>>Мьютекс? Z>Дада.. спасибо, уже нашел!
Ну вообще в реальных случаях ведь недостаточно просто отслеживать запущена программа или нет и грубо посылать пользователя. Интереснее, например, делать активным окно уже запущенного приложения. Если при запуске передаются какие-либо аргументы командной строки — то передавать их запущенному инстансу и пр. В общем я бы смотрел не в сторону мьютекса, а скорее в сторону ремотинга или чего-то подобного, чтобы при случае не пришлось ничего переделывать, когда задача усложнится.
У меня есть кое-какой примерчик отслеживания запущенного инстанса и коммуникации с ним:
Re[3]: Как запретить запуск нескольких копий программы?
От:
Аноним
Дата:
12.01.10 14:20
Оценка:
Здравствуйте, Codechanger, Вы писали:
4>> if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1) C>Вы в курсе, что имена процессов могут совпадать для разных приложений?
Re[4]: Как запретить запуск нескольких копий программы?
От:
Аноним
Дата:
12.01.10 14:27
Оценка:
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, zaabda, Вы писали:
C>>>Мьютекс? Z>>Дада.. спасибо, уже нашел!
ВВ>Ну вообще в реальных случаях ведь недостаточно просто отслеживать запущена программа или нет и грубо посылать пользователя. Интереснее, например, делать активным окно уже запущенного приложения. Если при запуске передаются какие-либо аргументы командной строки — то передавать их запущенному инстансу и пр. В общем я бы смотрел не в сторону мьютекса, а скорее в сторону ремотинга или чего-то подобного, чтобы при случае не пришлось ничего переделывать, когда задача усложнится.
ВВ>У меня есть кое-какой примерчик отслеживания запущенного инстанса и коммуникации с ним:
ВВ>Клиентский код: http://widestream.svn.sourceforge.net/viewvc/widestream/Source/Murray/Startup/Program.cs?revision=372&view=markup ВВ>Небольшая надстройка над ремотинг: ВВ>http://widestream.svn.sourceforge.net/viewvc/widestream/Source/Murray/Startup/Activation/
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, zaabda, Вы писали:
C>>>Мьютекс? Z>>Дада.. спасибо, уже нашел!
ВВ>Ну вообще в реальных случаях ведь недостаточно просто отслеживать запущена программа или нет и грубо посылать пользователя. Интереснее, например, делать активным окно уже запущенного приложения. Если при запуске передаются какие-либо аргументы командной строки — то передавать их запущенному инстансу и пр. В общем я бы смотрел не в сторону мьютекса, а скорее в сторону ремотинга или чего-то подобного, чтобы при случае не пришлось ничего переделывать, когда задача усложнится.
ВВ>У меня есть кое-какой примерчик отслеживания запущенного инстанса и коммуникации с ним:
ВВ>Клиентский код: http://widestream.svn.sourceforge.net/viewvc/widestream/Source/Murray/Startup/Program.cs?revision=372&view=markup ВВ>Небольшая надстройка над ремотинг: ВВ>http://widestream.svn.sourceforge.net/viewvc/widestream/Source/Murray/Startup/Activation/
Здравствуйте, zaabda, Вы писали:
Z>Здравствуйте! Подскажите, как в с# запретить запуск нескольких копий программы? Ну что-бы программа запустилась, а если второй раз по экзешнику ткнуть, то чтоб ничего бы не происходило. Кажется в давних студиях я находил данную опцию, а в 2008 не найду.. Z>Спасибо!
Кстати, в VB 2008 галочка Make Single Instance Application есть
Re[5]: Как запретить запуск нескольких копий программы?