Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать, сколько копий приложения запущенно?


Страницы:   1 2

тКнопка ©   (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 байта содержат счетчик запущенных копий. Каждая новая запущенная копия инкрементирует его.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо