Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запуск одной копии программы и обнаружение ее при повторном запуске

9.7K
21 января 2005 года
fantom_1978
1 / / 21.01.2005
Всем привет!
Тема не самая новая и уже проелась, но вчера просидел 3 часа в поисках примера по етому поводу так ничего толкового не нашел... Помогите пожалуйста.
Есть программа, написанная на Delphi. Мне нужно чтобы пользователь мог запусть ее только один раз, а при повторном запуске, если прога уже запущена, первая копия становилась активной независимо свернутая она на панель или весит в трее...
Спасибо!
303
21 января 2005 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by fantom_1978
Всем привет!
Тема не самая новая и уже проелась, но вчера просидел 3 часа в поисках примера по етому поводу так ничего толкового не нашел... Помогите пожалуйста.
Есть программа, написанная на Delphi. Мне нужно чтобы пользователь мог запусть ее только один раз, а при повторном запуске, если прога уже запущена, первая копия становилась активной независимо свернутая она на панель или весит в трее...
Спасибо!


Примерно так:
Файл project1.dpr:

Код:
program pmngr;

uses
  Forms,
  Windows,
  ...

var h_Wnd: hWnd;
    hMutex: integer;
begin
    hMutex:=CreateMutex(nil, true, 'AppLockMutex');
    if GetLastError <> 0 then
    begin
       h_Wnd:=FindWindow(nil, 'Заголовок формы');
       PostMessage(h_Wnd, WM_MYMESSAGE, 0, 0);
       Exit;
    end;
    try
       Application.Initialize;
       Application.CreateForm(TForm1, Form1);
       Application.Run;
    finally
       ReleaseMutex(hMutex);
    end;
end.

Файл form1.pas:
Код:
const
    WM_MYMESSAGE = WM_USER + 1;

    TForm1 = class(TForm)
    ...
    protected
        procedure WMMyMessage(var message: TMessage); message WM_MYMESSAGE;
    ...
    end;
...
procedure TForm1.WMMyMessage(var Message: TMessage);
begin
  if IsIconic(Application.Handle) then Application.Restore else Application.BringToFront;
end;
...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог