Показать сообщение отдельно
  #5  
Старый 02.08.2012, 20:26
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Гугл весьчь хорошая, но есть ешьчо и Рамблер сиречь Яндекс, там тоже первый ван бесплатно Способов не запуска второй копии навалом, можно и атомом, можно и мьютексом проверять, но возможен и простой способ - это поиск запущенного приложения в среде по имени, если оно есть, то закрываем двойника принудительно. Энто всё прописывается в файле проекта (*.dpr), до старта проги:
Код:
program Project1;
uses
  Forms,
  Windows,  SysUtils, // Эти юниты нужно добавить
  Unit1 in 'Unit1.pas' {Form1};

 var
HwndPrev:HWND;

  {$R *.res}

begin

  Application.Initialize;
  
 // Сначало ищем в системе главную форму по имени   
  HwndPrev := FindWindow('TForm1','Form1'); // в кавычках прописываем имя формы и её заголовок 

  if HwndPrev <= 0  then // и если её нет, то... 

  begin
  Application.CreateForm(TForm1, Form1);
  Application.Run;

  // запускаем приложение,

  end else // а если оно уже запущено, то грохаем двойника:
  begin
  SetForegroundWindow(HwndPrev); // тут передаём фокус мастеру, можно это и не делать 

  Application.Terminate; 

  end;
   end.
Ответить с цитированием