Главная » 2009 » Ноябрь » 6 » Как сделать, чтобы запускалась только одна копия приложения
09:00
Как сделать, чтобы запускалась только одна копия приложения
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;
Категория: Программирование | Просмотров: 1153 | Добавил: admin | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]