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

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


Алгоритм, применяемый мною:

В блоке begin..end модуля .dpr:


begin
  if HPrevInst <>0 then
  begin
    ActivatePreviousInstance;
    Halt;
  end;
end;

Реализация в модуле:


unit PrevInst;

interface

uses
  WinProcs,
  WinTypes,
  SysUtils;

type
  PHWnd = ^HWnd;

function EnumApps(Wnd: HWnd; TargetWindow: PHWnd): bool; export;

procedure ActivatePreviousInstance;

implementation

function EnumApps(Wnd: HWnd; TargetWindow: PHWnd): bool;
var
  ClassName: array[0..30] of char;
begin
  Result := true;
  if GetWindowWord(Wnd, GWW_HINSTANCE) = HPrevInst then
  begin
    GetClassName(Wnd, ClassName, 30);
    if STRIComp(ClassName, 'TApplication') = 0 then
    begin
      TargetWindow^ := Wnd;
      Result := false;
    end;
  end;
end;

procedure ActivatePreviousInstance;
var
  PrevInstWnd: HWnd;
begin
  PrevInstWnd := 0;
  EnumWindows(@EnumApps, LongInt(@PrevInstWnd));
  if PrevInstWnd <> 0 then
    if IsIconic(PrevInstWnd) then
      ShowWindow(PrevInstWnd, SW_Restore)
    else
      BringWindowToTop(PrevInstWnd);
end;

end.

           


CAPTIVA 2011 года в Наличии: chevrolet captiva цена. . moschino . Тепловые пункты Терм Сервис: вентиляция. Кондиционеры, вентиляция. . Какую выбрать стиральную машинку. Как выбрать класс энергопотребления стиральной машины. .


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

Copyright © LSD Software 2006 - 2011