![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать, сколько копий приложения запущенно?
тКнопка © (2008-04-10 23:53:00)Как узнать, сколько копий приложения работает в данный момент времени?
Riply (2008-04-11 02:40:00) [21]> [13] тКнопка (11.04.08 02:30)
> Нет, такой способ ( "Memory Mapped File" ) мне не подходит.
> Мне нужно пройтись по процессам, как подсказывает DrPass .
> Дайте код!
"пройтись по процессам" не совсем то, что надо.
Зависит от причин по которым нельзя допустить второй запуск.
Пользователь может запустить программу под разными именами (переименовывая exe-файл)
тКнопка (2008-04-11 02:30:00) [22]
> Германн © (11.04.08 02:17) [12]
...
> Тебя испугало "Memory Mapped File"? Тогда простейший пример
> тебя испугает ещё больше. Лучше сразу напиши "дайте код!
> ".
Нет, такой способ ( "Memory Mapped File" ) мне не подходит.
Мне нужно пройтись по процессам, как подсказывает DrPass.
Дайте код!
Германн (2008-04-11 02:17:00) [23]
> тКнопка (11.04.08 02:08) [11]
>
>
> > DrPass © (11.04.08 01:33) [7]
> ... Что мешает просто пройтись
> > по процессам любым доступным способом и посмотреть, из
> какого
> > модуля они запускались?
>
>
> А может-ли кто-нибудь показать простейший пример?
>
Тебя испугало "Memory Mapped File"? Тогда простейший пример тебя испугает ещё больше. Лучше сразу напиши "дайте код!".
тКнопка (2008-04-11 02:08:00) [24]
> DrPass © (11.04.08 01:33) [7]
... Что мешает просто пройтись
> по процессам любым доступным способом и посмотреть, из какого
> модуля они запускались?
А может-ли кто-нибудь показать простейший пример?
Германн (2008-04-11 01:53:00) [25]
> Семеныч (11.04.08 01:41) [9]
>
> > DrPass © (11.04.08 01:33) [7]
>
> Верно. Но этот способ более трудоемок и какой выбрать (более
> простой или более точный) - это зависит от требований задачи.
> В данном случае, как выяснилось, даже и счетчика не нужно.
>
>
В этом случае ещё ничего не известно. Судя по [0] и [2]. По моему опыту знаю, что возможен допвопрос: "Если уже запущена моя программа, то как ей передать командную строку".
Семеныч (2008-04-11 01:41:00) [26]> DrPass © (11.04.08 01:33) [7]
Верно. Но этот способ более трудоемок и какой выбрать (более простой или более точный) - это зависит от требований задачи. В данном случае, как выяснилось, даже и счетчика не нужно.
Германн (2008-04-11 01:39:00) [27]
> DrPass © (11.04.08 01:33) [7]
>
>
> > 1. Создать Memory Mapped File в страничной памяти системы
> > (см. CreateFileMapping и MapViewOfFile) размером 4 байта.
>
> >
> >
> > 2. Эти 4 байта содержат счетчик запущенных копий. Каждая
> > новая запущенная копия инкрементирует его.
>
> Это плохой способ. Каждая умершая не своей смертью копия
> оставит свой след в этом счетчике.
Это нормальный способ для нормальных случаев. Параноики могут использовать любые другие способы по их выбору. :)
Не прими на свой счёт.
DrPass (2008-04-11 01:33:00) [28]
> 1. Создать Memory Mapped File в страничной памяти системы
> (см. CreateFileMapping и MapViewOfFile) размером 4 байта.
>
>
> 2. Эти 4 байта содержат счетчик запущенных копий. Каждая
> новая запущенная копия инкрементирует его.
Это плохой способ. Каждая умершая не своей смертью копия оставит свой след в этом счетчике. Что мешает просто пройтись по процессам любым доступным способом и посмотреть, из какого модуля они запускались?
Семеныч (2008-04-11 01:31:00) [29]> Германн © (11.04.08 01:25) [5]
> нет времени/желания копаться в архивах.
И смысла тоже - для профи вопрос совершенно ясен и без архивов.
Германн (2008-04-11 01:25:00) [30]
> Семеныч (11.04.08 01:02) [4]
То обсуждение не было "завершено". Бо сам вопрос попытки повторного запуска приложения гораздо более сложный. В архивах можно найти более плодотворное обсуждение данного вопроса, но нет времени/желания копаться в архивах.
Семеныч (2008-04-11 01:02:00) [31]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1207045289&n=0
Германн (2008-04-11 00:26:00) [32]
> тКнопка (11.04.08 00:18) [2]
Совет [1] вполне подходит.
тКнопка (2008-04-11 00:18:00) [33]Уточнение:
мне даже не важно знать сколько именно копий работает,
а достаточно лишь знать работают ли еще другие копии программы в данный момент или нет?
Семеныч (2008-04-11 00:00:00) [34]1. Создать Memory Mapped File в страничной памяти системы (см. CreateFileMapping и MapViewOfFile) размером 4 байта.
2. Эти 4 байта содержат счетчик запущенных копий. Каждая новая запущенная копия инкрементирует его.