Программы   Загрузка Партнерство   О компании Контакты  
 
                    
  Карта Сайта   
   

Как не допустить запуск второй копии программы 9



var
  MutexHandle: THandle;
var
  UniqueKey: string;

function IsNextInstance: BOOLEAN;
begin

  Result := FALSE;

  MutexHandle := 0;
  MutexHandle := CREATEMUTEX(nil, TRUE, UniqueKey);
  if MutexHandle <> 0 then
  begin
    if GetLastError = ERROR_ALREADY_EXISTS then
    begin
      Result := TRUE;
      CLOSEHANDLE(MutexHandle);
      MutexHandle := 0;
    end;
  end;
end;

begin

  CmdShow := SW_HIDE;
  MessageId := RegisterWindowMessage(zAppName);
  Application.Initialize;
  if IsNextInstance then
    PostMessage(HWND_BROADCAST, MessageId, 0, 0)
  else
  begin
    Application.ShowMainForm := FALSE;
    Application.CreateForm(TMainForm, MainForm);
    MainForm.StartTimer.Enabled := TRUE;
    Application.Run;
  end;
  if MutexHandle <> 0 then
    CLOSEHANDLE(MutexHandle);
end.

В MainForm вам необходимо вставить обработчик внутреннего сообщения


procedure TMainForm.OnAppMessage(var M: TMSG; var Ret: BOOLEAN);
begin
  if M.Message = MessageId then
  begin
    Ret := TRUE;
    // Поместить окно наверх !!!!!!!!
  end;
end;

initialization
  ShowWindow(Application.Handle, SW_Hide);
end.

           


сумки dakine . МММ 2011 Москва . Москва - срочный ремонт стартеров Mercury. Стоимость ремонт стартера на Mercedes Е 280 Москва. . Свинцово-кислотные аккумуляторы Sonnenschein .


Программы  |  Загрузка  |  Партнерство  |  О компании  |  Контакты

Copyright © LSD Software 2006 - 2011