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.
Запуск одной копии программы и обнаружение ее при повторном запуске
Тема не самая новая и уже проелась, но вчера просидел 3 часа в поисках примера по етому поводу так ничего толкового не нашел... Помогите пожалуйста.
Есть программа, написанная на Delphi. Мне нужно чтобы пользователь мог запусть ее только один раз, а при повторном запуске, если прога уже запущена, первая копия становилась активной независимо свернутая она на панель или весит в трее...
Спасибо!
Цитата:
Originally posted by fantom_1978
Всем привет!
Тема не самая новая и уже проелась, но вчера просидел 3 часа в поисках примера по етому поводу так ничего толкового не нашел... Помогите пожалуйста.
Есть программа, написанная на Delphi. Мне нужно чтобы пользователь мог запусть ее только один раз, а при повторном запуске, если прога уже запущена, первая копия становилась активной независимо свернутая она на панель или весит в трее...
Спасибо!
Всем привет!
Тема не самая новая и уже проелась, но вчера просидел 3 часа в поисках примера по етому поводу так ничего толкового не нашел... Помогите пожалуйста.
Есть программа, написанная на Delphi. Мне нужно чтобы пользователь мог запусть ее только один раз, а при повторном запуске, если прога уже запущена, первая копия становилась активной независимо свернутая она на панель или весит в трее...
Спасибо!
Примерно так:
Файл project1.dpr:
Код:
Файл 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;
...
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;
...