Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Запретить запуск второго экземпляра программы 2

- Чем отличается программист от политика?
- Программисту платят деньги за работающие программы.


 var
   AtomText: array [0..31] of Char;
 
 procedure LookForPreviousInstance;
 var
   PreviousInstanceWindow : hWnd;
   AppName : array[0..30] of char;
   FoundAtom : TAtom;
 begin
   // помещаем имя приложения в AtomText
   StrFmt(AtomText, 'OnlyOne%s', [Copy(Application.Title,1,20)]);
   // Проверяем, не создано ли уже атома с таким именем приложения
   FoundAtom := GlobalFindAtom(AtomText);
   if FoundAtom <> 0 then { эта копия приложения уже запущена }
   begin
     StrFmt(AppName,'%s', [Application.Title]);
     // изменяем текущий заголовок, чтобы FindWindow не видела его
     Application.ShowMainForm := false;
     Application.Title := 'destroy me';
     // ищем предыдущую копию приложения
     PreviousInstanceWindow := FindWindow(nil,AppName);
     // Передаём фокус на предыдущую копию приложения
     // завершаем текущую копию
     Application.Terminate;
 
     if PreviousInstanceWindow <> 0 then
       if IsIconic(PreviousInstanceWindow) then
         ShowWindow(PreviousInstanceWindow,SW_RESTORE)
       else
         SetForegroundWindow(PreviousInstanceWindow);
   end;
   // создаём глобальный атом, чтобы предотвратить
   // запуск другой копии приложения
   FoundAtom := GlobalAddAtom(AtomText);
 end;
 
 constructor TForm.Create(AOwner: TComponent);
 begin
   inherited;
   LookForPreviousInstance;
 end;
 
 destructor TForm.Destroy;
 var
   FoundAtom : TAtom;
   ValueReturned : word;
 begin
   // не забудьте удалить глобальный атом
   FoundAtom := GlobalFindAtom(AtomText);
   if FoundAtom <> 0 then
     ValueReturned := GlobalDeleteAtom(FoundAtom);
   inherited Destroy;
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS