Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск одной копии приложения 
:(
    Опции темы
vfedorov
Дата 25.6.2007, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 23.3.2006

Репутация: нет
Всего: нет



Как запустить только одну копию приложения?

И если одна уже запущена и пользователь хочет запустить другую - делать активной первую копию и вторую не запускать?

Заранее спасибо
PM MAIL   Вверх
QryStaL
Дата 25.6.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 3
Всего: 32



Класс System.Threading.Mutex содержит все необходимые средства для решения задачи.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
Subl1me
Дата 30.6.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



Цитата(QryStaL @  25.6.2007,  15:08 Найти цитируемый пост)
Класс System.Threading.Mutex содержит все необходимые средства для решения задачи. 


Либо класс System.Diagnostics.Process.  smile 

Вот пример на VB.NET

Код

Public Module OneInstanceApplication
          Public Sub Main()
                Dim Proc() as Process
                Dim ModuleName, ProcName As String
                ModuleName = Process.GetCurrentProcess.MainModule.ModuleName
                ProcName = System.IO.Path.GetFileNameWithoutExtension(ModuleName)
                Proc = Process.GetProcessesByName(ProcName)
                If Proc.Length > 1 Then
                      Console.WriteLine("Запущено более одного экземпляра приложения.")
                       Application.Exit()
                End If
          End Sub
End Module


З.Ы. Пример взят из книги Мэтью Макдональда "Рецепты программирования на Visual Basic.NET"
PM MAIL   Вверх
Naum
Дата 31.7.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Subl1me, Mutex'ами, ИМХО, все-таки лучше.
Цитата(Subl1me @  30.6.2007,  17:56 Найти цитируемый пост)
Visual Basic.NET

В VB вообще в свойствах проекта можно поставить галочку - че-то типа "Запускать не больше одного экземпляра".


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
nettitan
Дата 21.11.2007, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 9.6.2006
Где: г. Хмельницкий

Репутация: нет
Всего: нет



Вижуал Бейсик это хорошо но желательно на Шарпе примерчик  smile 
PM MAIL WWW ICQ Skype   Вверх
1stain
Дата 21.11.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 4
Всего: 40



Код

        if (System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess().ProcessName).Length > 1)
            System.Diagnostics.Process.GetCurrentProcess().Kill();



--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
nettitan
Дата 22.11.2007, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 9.6.2006
Где: г. Хмельницкий

Репутация: нет
Всего: нет



а где это нада втавить?
PM MAIL WWW ICQ Skype   Вверх
D_F_V
Дата 23.11.2007, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 27.3.2007
Где: Vladivostok

Репутация: нет
Всего: 1



Цитата(nettitan @ 22.11.2007,  20:05)
а где это нада втавить?

Класс называется Program, в файле Program.cs
Функция static void Main() - это точка входа в программу..

Код


        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            if (System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess().ProcessName).Length > 1)
            {
                System.Diagnostics.Process.GetCurrentProcess().Kill();
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new logo(5000, false));
            Application.Run(new MDIMain());
        }


PM MAIL ICQ MSN   Вверх
nettitan
Дата 13.3.2008, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 9.6.2006
Где: г. Хмельницкий

Репутация: нет
Всего: нет



Ну а если я открываю вторую копию с параметрами командной строки (например передаю ссылку на некую страницу в интернете), как мне эту сслыку передать первоначальной запущеной программе. Ведь когда мы убиваем копию приложения, ссылка уходит в небытие вместе с убитой копией. Так как же быть??? smile 
PM MAIL WWW ICQ Skype   Вверх
nettitan
Дата 15.3.2008, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 9.6.2006
Где: г. Хмельницкий

Репутация: нет
Всего: нет



ТАФАРИЩИ как же быть?
PM MAIL WWW ICQ Skype   Вверх
_hunter
Дата 17.3.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 1
Всего: 98



а в этом случае ищем в гугле что-нить типа "csharp interprocess communications" и находим, например, это:
http://www.codeguru.com/csharp/csharp/cs_n...icle.php/c7259/
можно по тому же remoting'у что-нить поискать... но для текущей задачи труб вполне хватит...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0968 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.