|
Вопрос # 1 865/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Как сделать так чтобы моя программа не запускался 2 раза ? Заранее СПС!!!
 |
Вопрос задал: 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.
|
Аксион (статус: 4-ый класс), 1 сентября 2008, 15:04 [#2]:
ElektrinO Вы хотябы раз напишите помогли мы вам или нет???!!!
|
|
ElektrinO (статус: Посетитель), 8 сентября 2008, 20:37 [#3]:
>>Блазер,
Да вы мне помогли, я почти закончил свою программу. Спасибо вам !!!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|