![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 1 Всего: 9 |
Сегодня столкнулся с тем, что нужно было не просто исключить повторный запуск, а весьма хитро исключить )
Разрабатываю репликатор, он цепляется к промышленному COM-серверу, и ложит в базу данных. Этот репликатор разрешено для запуска в двух экземплярах, но ! , в разных папках. К примеру один репликатор для турбогенератора, а другой для котлоагрегата ! ;) Из этой ситуации, мне не подошел варинт с глобальным атомом, уж очень много мороки - вдруг юзер вырубиль репликатор через диспетчер задач, значит глобальный атом при запуске надо искать и спрашивать юзера, а первый ли он раз запускает этот репликатор. Вобщем выставил требования таковыми: 1. Возможность запуска двух экземпляров репликатора, но с разных папок. 2. Из одной папки репликатор можно запустить только и только в одном экземпляре 3. Репликатор не должен зависеть от последствий аварийного выключения через диспетчер задач. При данных требованиях, остановился на следующем коде, может кому и поможет:
hMutex - несмотря на то что это локальная переменная и казалось мы же теряем значение хэндла. Ну и что я спрошу ))) В конечном итоге, хоть через диспетчер задач, хоть через Application.Terminate хэндлы то убиваются - значит убивается и мьютекс ;) Думаю, это решит проблемы новичков |
|||
|
||||
07pov23 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Столкнулся с такой проблемой. Вроде бы программа не запускается дважды. Но! В терминальном режиме ни одна фича приведенная здесь не запускается. Подскажите, пожалуйста, как можно запретить запуск нескольких копий программы в терминальном режиме разными пользователе.
ЗЫ. Еще вопрос хоть не совсем в тему, но все же. Как запускать программу в качестве службы или под системой, т.е. еще до аутентификации пользователя |
|||
|
||||
dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
07pov23, берешь любой код с CreateMutex/Event/FileMapping и в имени объекта делаешь префикс 'Global\', т.е. вместо 'MyOwnMutex'(см. 3ий пост) становится 'Global\MyOwnMutex'. единственное, что надо бы проверку версии винды делать, ибо до w2k(вроде) такой префикс недопустим.
|
||||
|
|||||
07pov23 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Вся проблема в том, что как раз win2k и есть.
|
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
а в Висте в глобал очень мало кого пускают -------------------- Обижено школьников: 8 |
|||
|
||||
bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
Модератор: Пожалуйста, один топик - один вопрос. Правила форума: http://forum.vingrad.ru/index.php?act=boardrules |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |