C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Запущенна ли программа?
kutuzov
Отправлено: 16.10.2006, 16:33


Ученик-кочегар

Группа: Участник
Сообщений: 27



Программа состоит из 2х частей.
Одна часть висит в памяти другая в трее.
Та, что в трее запускает и управляет той, что в памяти.
Как узнать, не запущен ли уже процесс чтоб его 2й раз не запустить?

Какой лучше вариант коммуникации между 2мя программами выбрать?
AVC
Отправлено: 16.10.2006, 16:59


Ветеран

Группа: Модератор
Сообщений: 1583



Мьютексы?
kutuzov
Отправлено: 16.10.2006, 17:04


Ученик-кочегар

Группа: Участник
Сообщений: 27



Ы? sad.gif
Admin
Отправлено: 16.10.2006, 17:07


Владимир

Группа: Администратор
Сообщений: 1190



Там может программа одна ?
И та что в трее, и та что запущена == одна и та же ?
kutuzov
Отправлено: 16.10.2006, 17:15


Ученик-кочегар

Группа: Участник
Сообщений: 27



Так она сначала и была одна
я неделю по этом поводу с шефом общаюсь...
sad.gif

Пришел к выводу что проще для нервной системы сделать из 1й 2е...
AVC
Отправлено: 16.10.2006, 17:25


Ветеран

Группа: Модератор
Сообщений: 1583



В трее висит не программа а иконка + менюшка + hint, а программы обе в памяти. smile.gif
Может уточните постановку задачи для более разумного ответа.
Посмотрите поиск по слову mutex
Admin
Отправлено: 16.10.2006, 17:34


Владимир

Группа: Администратор
Сообщений: 1190



QUOTE
В трее висит не программа а иконка + менюшка + hint, а программы обе в памяти


Так может в памяти-то одна программа, а в трее её иконка+менюшка,
и нужно просто организовать моменты, когда её (иконку в трее) надо
то показывать, то убирать ?
kutuzov
Отправлено: 16.10.2006, 17:34


Ученик-кочегар

Группа: Участник
Сообщений: 27



QUOTE (AVC @ 16.10.2006, 18:25)
В трее висит не программа а иконка + менюшка + hint, а программы обе в памяти. smile.gif
Может уточните постановку задачи для более разумного ответа.
Посмотрите поиск по слову mutex

ОК.
В области памяти висит программа отображающая иконку и менюшку- это управляющая программа(Программа А).
Есть еще одна программа, выполняющая некие действия. Эта программа не отображается на экран е(Программа В).

Пользователь при помощи менюшки программы А может:
- запускать программу В
- Завершить программу В
- Приостановить программу В

При закрытии программы А программа В остается в памяти.

Поиск по mutex смотрю.
kutuzov
Отправлено: 16.10.2006, 17:38


Ученик-кочегар

Группа: Участник
Сообщений: 27



QUOTE (Admin @ 16.10.2006, 18:34)
QUOTE
В трее висит не программа а иконка + менюшка + hint, а программы обе в памяти


Так может в памяти-то одна программа, а в трее её иконка+менюшка,
и нужно просто организовать моменты, когда её (иконку в трее) надо
то показывать, то убирать ?

К сожалению начальству не всегда интересно как можно сделать..
Ему интересно как нужно сделать smile.gif
Admin
Отправлено: 16.10.2006, 17:40


Владимир

Группа: Администратор
Сообщений: 1190



Ничего я не понял, ну да ладно. wizard.gif
kutuzov
Отправлено: 16.10.2006, 17:41


Ученик-кочегар

Группа: Участник
Сообщений: 27



QUOTE (Admin @ 16.10.2006, 18:40)
Ничего я не понял, ну да ладно. wizard.gif

С прогой не ясно или с шефом?
Admin
Отправлено: 16.10.2006, 17:52


Владимир

Группа: Администратор
Сообщений: 1190



Всё ясно, написал до того как прочитал. smile.gif

CreateProcess(B,C,D,E) в программе A и управляйте программами
B, C, D, E как захочется.

___
Неужели начальство разбирается ? Если бы мой директор в такое
полез советы давать — послал бы его самого писать программу,
если он такой умный.
Но мой директор еще умнее — поэтому туда, в чем он не разбирается,
он не лезет, предоставляя делать так, как удобнее тем, кто в этом
разбирается лучше него.
kutuzov
Отправлено: 16.10.2006, 18:01


Ученик-кочегар

Группа: Участник
Сообщений: 27



QUOTE (Admin @ 16.10.2006, 18:52)
Всё ясно, написал до того как прочитал. smile.gif

CreateProcess(B,C,D,E) в программе A и управляйте программами
B, C, D, E как захочется.

___
Неужели начальство разбирается ? Если бы мой директор в такое
полез советы давать — послал бы его самого писать программу,
если он такой умный.
Но мой директор еще умнее — поэтому туда, в чем он не разбирается,
он не лезет, предоставляя делать так, как удобнее тем, кто в этом
разбирается лучше него.

Спасибо с CreateProcess, попробую...

Нет сой не сильно разбирается. Просто ему захотелось поиграть в веселую игру "Угадайте кто из нас начальник который знает как будит удобнее пользователю"... После недельных споров, я понял что проще переписать прогу...
kutuzov
Отправлено: 16.10.2006, 18:03


Ученик-кочегар

Группа: Участник
Сообщений: 27



QUOTE (Admin @ 16.10.2006, 18:52)
CreateProcess(B,C,D,E) в программе A и управляйте программами
B, C, D, E как захочется.


А после закрытия программы запускающей CreateProcess и запускаее ее снова она сможет запущеннвм ранее процессом B управлять?
Admin
Отправлено: 16.10.2006, 18:11


Владимир

Группа: Администратор
Сообщений: 1190



Я мягко предложил бы ему переписать прогу самому, ссылаясь
что это очень сложное и ответственное задание,
или предварительно предложил бы ему составить техническое
задание на неё в письменном виде, где он мог бы изложить все
требования к ней, чтобы в дальнейшем не было разногласий — "что
написано пером... ",
в крайнем случае — выбить на это дело месяца три,
("это очень сложная задача, требующая нестандартного подхода ...")
из которых неделя уйдет на переписывание, а остальное — на
тестирование (на себя).

Хотя польза от такого переписывания тоже огромна — можно
в свое удовольствие за счет оплаченного рабочего времени
изучить многие интересные аспекты взаимодействия
программ/процессов, мутексы, семафоры и пр.
kutuzov
Отправлено: 16.10.2006, 18:23


Ученик-кочегар

Группа: Участник
Сообщений: 27



QUOTE (Admin @ 16.10.2006, 19:11)
Я мягко предложил бы ему переписать прогу самому, ссылаясь
что это очень сложное и ответственное задание,
или предварительно предложил бы ему составить техническое
задание на неё в письменном виде, где он мог бы изложить все
требования к ней, чтобы в дальнейшем не было разногласий — "что
написано пером... ",
в крайнем случае — выбить на это дело месяца три,
("это очень сложная задача, требующая нестандартного подхода ...")
из которых неделя уйдет на переписывание, а остальное — на
тестирование (на себя).

Хотя польза от такого переписывания тоже огромна — можно
в свое удовольствие за счет оплаченного рабочего времени
изучить многие интересные аспекты взаимодействия
программ/процессов, мутексы, семафоры и пр.

спасибо за совет....
Admin
Отправлено: 16.10.2006, 18:53


Владимир

Группа: Администратор
Сообщений: 1190



QUOTE (kutuzov @ 16.10.2006, 19:03)
QUOTE (Admin @ 16.10.2006, 18:52)
CreateProcess(B,C,D,E) в программе A и управляйте программами
B, C, D, E как захочется.


А после закрытия программы запускающей CreateProcess и запускаее ее снова она сможет запущеннвм ранее процессом B управлять?

user posted image

"Windows98 Руководство разработчика" в 2-х томах Бен Эззель, Джим Блейни (Изд. "BHV")
Описание методик и приемов программирования приложений, функционирующих в среде Windows, 32-разрядная среда Windows 98, ресурсы приложений, многопоточные приложения, процессы и каналы, операции с реестром, графика в Windows, обмен информацией между приложениями dde-ole и др.

Советую изучить эту книжку относительно процессов и потоков,
мутексов, обмен информацией между приложениями и пр, очень
просто и понятно всё написано.
__

Также поможет Поиск по Форуму по: CreateProcess
(или наоборот — отобьет охоту делать эту задачу через 2 процесса) biggrin.gif
Arsa
Отправлено: 16.10.2006, 22:41


Дежурный стрелочник

Группа: Участник
Сообщений: 77



А может через командную строку это реализовать. По-моему реально!
olegenty
Отправлено: 17.10.2006, 07:34


Ветеран

Группа: Модератор
Сообщений: 2412



тогда уж сервис + управляющая консоль

Вернуться в Вопросы программирования в C++Builder