Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 865

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Как сделать так чтобы моя программа не запускался 2 раза ? Заранее СПС!!!

ElektrinO Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: ElektrinO (статус: Посетитель)
Вопрос отправлен: 31 августа 2008, 14:28
Состояние вопроса: открыт, ответов: 3.

Ответ #1. Отвечает эксперт: Аксион

Здравствуйте, ElektrinO!
Посмотрите на этот пример: http://www.prog-gate.pp.ru/fido7.ru.delphi.chainik/4051.html
И эту статью: http://z-oleg.com/delphi/systemlc.htm
Удачи.

Ответ отправил: Аксион (статус: 4-ый класс)
Время отправки: 31 августа 2008, 15:39

Ответ #2. Отвечает эксперт: ANBsoft

Здравствуйте, ElektrinO!
Скачайте себе справочник по Делфи Kuliba
(Пример1 или Пример2)
или используем поиск)
В них описаны десятки способов решения этой задачи, можно выбрать наиболее подходящий.

Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 31 августа 2008, 16:21

Ответ #3. Отвечает эксперт: Feniks

Здравствуйте, ElektrinO!
Способов может быть очень много: от самых простых, до извращенных... :-) Лично я пользовался "ФайлМаппингом" - функция CreateFileMapping. Легко, удобно и быстро. Все это описано в Хелпе. Суть в том, что в памяти создается что-то похожее на виртуальный файл. Вот и проверяем, есть ли такой уже или нет. А с помощью таких файлов можно передавать информацию из одного приложения в другое.
Вот пример, на оригинальность не претендую ;-)

const
   AppID = 'Некий идентификатор вашего приложения';
var
   FileMapping           : Integer;
implementation
procedure TMainForm.FormCreate(Sender: TObject);
begin
   FileMapping := CreateFileMapping($FFFFFFFF, Nil, PAGE_READONLY, 0, 1, AppID);
   If GetLastError = ERROR_ALREADY_EXISTS then
   begin
      ShowMessageForm(mtShowMessageError,
                      'Ошибка загрузки',
                      'Программный комплекс уже запущен !!! Запуск второй копии программы недопускается.');
      Halt;
   end else
   begin
// === тут выполняем все чуто нужно для запуска приложения ===
   end;
end;
// ..........
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   CloseHandle(FileMapping);
end;
ShowMessageForm - моя собственная функция для сообщений.

P.S. Желаю удачи.

Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 1 сентября 2008, 10:35


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 8 сентября 2008, 20:37; участников в обсуждении: 3.
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 31 августа 2008, 21:52 [#1]:

Kulib'у можно и с Delphi.int.ru загрузить:
Часть 1
Часть 2
Аксион

Аксион (статус: 4-ый класс), 1 сентября 2008, 15:04 [#2]:

ElektrinO Вы хотябы раз напишите помогли мы вам или нет???!!!
ElektrinO

ElektrinO (статус: Посетитель), 8 сентября 2008, 20:37 [#3]:

>>Блазер,
Да вы мне помогли, я почти закончил свою программу. Спасибо вам !!!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:00
Выполнено за 0.04 сек.