![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
У многих прог такая вещь реализована, т.е. нельзя запустить программу несколько раз если она уже запущена. Хочу у своих прог тоже так делать.
Вот что я пытаюсь изобразить:
Но прога всеравно запускается повторно. |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 9 Всего: 98 |
а ты уверен что окно именно так называется? запусти WinSight и посмотри
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 10 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
Quadr0 |
|
|||
Unregistered |
...
Это сообщение отредактировал(а) Quadr0 - 14.7.2011, 22:22 |
|||
|
||||
Quadr0 |
|
|||
Unregistered |
...
Это сообщение отредактировал(а) Quadr0 - 14.7.2011, 22:22 |
|||
|
||||
Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 3 Всего: 108 |
я пользуюсь таким вариантом:
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
jack128_ |
|
|||
Unregistered |
Quadr0
Застрял в Win16? ;) Подъитоживая все предложенные методы: создаешь именнованный объект ядра. Если в процессе создания выледзла ошибка ERROR_ALREADY_EXISTS (объект с заданным именем уже существует) то завершаешь программу. Имя объекта должно быть уникальным, так чтот лудше использовать для именнования guid'ы |
|||
|
||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
Всем спасибо. Принцип понятен
![]() |
|||
|
||||
h2o |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: нет Всего: 1 |
Нужно зделать Семафор! Простая структура+делает всё что тебе нужно!
Добавлено @ 15:37 в FormCreate пропиши
Добавлено @ 15:39 '1C db PackIT!Mon' - это любое слово, например название твоей проги. если у тебя несколько прог, вписывай разные слова, а то одна не даст другую запустить! --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: нет Всего: 7 |
Я делаю как сказал Poseidon но еще добавляю сообщение, что программа уже запущена, работает 100%, но есть одна фигня, это то, что управление не передается уже запущенной программе
![]() |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 9 Всего: 98 |
для этого можеш посылать ей какое-нить сообщение ( WM_USER + N ) можеш event назначить...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
dvamaster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: 2 Всего: 10 |
Есть еще Atom, можно при запуске поги проверять его наличие, затем, если не найден, создавать его, а при выходе убивать!
![]() -------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
Атом можно использовать , только одна трабла, при зависании процесса и последующем его гроханье через таскманагер, процесс более запустить не удастся
![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
dvamaster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: 2 Всего: 10 |
Romikgy, ты прав, чего-то я про это не подумал
-------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
|||
|
||||
Angel_19 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 5.4.2005 Репутация: нет Всего: нет |
В наборе RX есть для этого функция. Работает отлично ...
|
|||
|
||||
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. |