| 
| 
 | Вопрос # 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]:>>Блазер, Да вы мне помогли, я почти закончил свою программу. Спасибо вам !!!
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |