Предотвращение запуска нескольких копий программы.

Обсуждаются как существующие проекты (перевод документации, информационная система и т.п.), так и создание новых.

Модератор: Модераторы

Сообщение Cheb » 12.04.2008 18:19:34

название програмы должно быть меньше 8 символов и не содержать в себе upx ? =)

Не. Просто не должно начинаться с "/tmp/upx".
upx, зараза, создаёт временный файл со случайно сгенерированным именем, и запускает уже его. В результате проверка всегда врёт, что другие экземпляры не запущены.

На самом деле это всё - условие аварийного прерывания проверки, при котором возвращается false.
Но оно не будет работать правильно в случае upx'а из за того, что в имя файла-мьютекса добавляется имя екзешника (т. е. случайный мусор в данном случае).

Надо ещё продумать, а то я у себя просто запретил сжимать программу upx'ом: матюкнётся и встанет.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Сообщение Attid » 12.04.2008 18:36:38

Cheb писал(а):Не. Просто не должно начинаться с "/tmp/upx".
upx, зараза, создаёт временный файл со случайно сгенерированным именем, и запускает уже его. В результате проверка всегда врёт, что другие экземпляры не запущены.

у меня с приведеной строчкой не работает, я её удалил.


Cheb писал(а):Надо ещё продумать, а то я у себя просто запретил сжимать программу upx'ом: матюкнётся и встанет.

а че думать надо использовать, то что сделано специально для этого
YuriPro предложил симафоры (но пример так и не дал), они для этого в принципе созданы (вернее флаг создан), только я еще проверял как это все должно выглядеть
в паскале модуль это модуль ipc использовать надо semop с флагом SEM_UNDO
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Предотвращение запуска нескольких копий программы.

Сообщение Sawer » 22.08.2008 00:11:20

есть же уже готовый компонент для этого!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48

Re: Предотвращение запуска нескольких копий программы.

Сообщение Attid » 22.08.2008 19:51:04

как-то там много файликов. я пожалуй на старом останусь =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Предотвращение запуска нескольких копий программы.

Сообщение Sawer » 22.08.2008 22:21:43

а зря...
ставиться как визуальный компонент... просто на форму кинул и все проблемы решены!
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48

Re: Предотвращение запуска нескольких копий программы.

Сообщение Deepthroat » 24.08.2008 19:45:37

А если консоль? Все же, ИМХО, проще был бы вариант "просто в uses модуль указал - и все проблемы решены".
Аватара пользователя
Deepthroat
постоялец
 
Сообщения: 144
Зарегистрирован: 06.09.2007 00:21:34
Откуда: Outer Heaven

Re: Предотвращение запуска нескольких копий программы.

Сообщение Timid » 02.04.2010 12:32:12

Sawer писал(а):есть же уже готовый компонент для этого!

Дурь это какая-то а не компонент, посылать все сообщения при открытии программы "есть такой как я?"
А если первая копия занята очень? Отдельный поток использовать?
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: Предотвращение запуска нескольких копий программы.

Сообщение qivi » 02.04.2010 13:41:39

Я вот тут уже задавался этим вопросом:
viewtopic.php?f=5&t=5187

Использую модуль из второго поста вышеуказанной темы.
Единственная проблема, после блокировки повторного запуска хочу поднять на передний план окно 1'го экземпляра приложения, а как это сделать?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Предотвращение запуска нескольких копий программы.

Сообщение leo_bsv » 28.10.2010 22:07:23

Осмелюсь предложить своё достаточно универсальное решение: runonce.pas
Если приложение запущено и пользователь запускает его повторно, модуль не запускает новую программу, а активирует уже работающую, т.е. если она была свёрнута или находилась под другими окнами - поднимет окно поверх всех остальных.
Работает под linux.
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Пред.

Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru