![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка не запущена ли уже эта программа [D7]
Надежда © (2007-08-07 15:12:00)Как можно в своей программе проверить не запущена ли уже эта программа на компьютере ? Пожалуйста, подскажите!
Сергей М. (2007-08-07 16:49:00) [21][7], [8]
О боже)
Virgo_Style (2007-08-07 16:47:00) [22]l_v (07.08.07 16:45) [7]
Если же программа вдруг упала - не вопрос, лезешь в реестр и ручками правишь значение
l_v (2007-08-07 16:45:00) [23]можно к примеру через реестр:
при запуске проверять значение какого-то созданного тобой параметра в реестре, если 0, то программа единственная и можно дальше работать и потом сразу же пишешь в этот параметр 1, а при завершении работы пишешь в тот параметр 0, если допустим 1, то значит прога запущена и выход.
Сергей М. (2007-08-07 15:39:00) [24]
> Надежда (07.08.07 15:37) [5]
см., к примеру, GlobalAddAtom, GlobalFindAtom, GlobalDeleteAtom
Надежда (2007-08-07 15:37:00) [25]Окон в программе действительно нет. Есть моя программка, перекачивающая данные из одного хранилища в другое. Работает нормально. Но её не видно и иногда даже сама пытаюсь запустить её второй раз. А вот этого уже нельзя делать. Вот и требуется проверять : а не запустила ли я её уже. А с других рабочих мест она запускается по расписанию. Так что надеяться только на "человеческий фактор" не приходится. Посоветуйте, пожалуйста, как быть ?
JanMihail (2007-08-07 15:32:00) [26]
> Какое нафих окно, если программа как таковая вовсе не обязана
> создавать какие бы то ни было окна ?
Но я так предполагаю, что автор новичок. И он не знает еще, что прога бывает без окон. Наверняка он запустил Delphi и появилась форма. Он и думает, что это и есть прога
Сергей М. (2007-08-07 15:27:00) [27]
> JanMihail © (07.08.07 15:26) [2]
>
> Ищешь окно по классу и по заголовку окна
Какое нафих окно, если программа как таковая вовсе не обязана создавать какие бы то ни было окна ?
Сергей М. (2007-08-07 15:26:00) [28]Что такое "эта программа" ?
JanMihail (2007-08-07 15:26:00) [29]Ищешь окно по классу и по заголовку окна. Так как это твоя программа, ты их знаешь. Если такое есть, значит запущена.
if FindWindow(<класс окна>, <заголовок окна>) <> 0 then
ShowMessage('Прога запущена')
else
ShowMessage('Прога не запущена');
Ну это как простой вариант. Может быть и другая программа с таким классом и заголовком. Поэтому желательно какой-либо отличительный признак. Например создать класс TMyProgramAndTolkoMyProgram наследником класса TEdit. Затем поместить его на форму. И сделать проверку на еще одно условие.
if FindWindowEx(<хэндл окна>, 0, 'TMyProgramAndTolkoMyProgram', nil) <> 0 then
ShowMessage('Прога точно запущена')
else
ShowMessage('Прога точно не запущена');