Как правильно активизировать окно

DelphiLexx
Дата: 16.10.2006 11:39:25
Мое приложение должно работать в одном экземпляре для этого я используя:
function
  CheckAppRun:
  integer;
var
  Map: THandle;  
begin
  Map := CreateFileMapping($FFFFFFFF, nil, PAGE_READONLY, 0, 32,
    '%af_src_comm_0');
  if Map = 0 then
    Result := -1
  else if GetLastError = ERROR_ALREADY_EXISTS then
    Result := 1
  else
    Result := 0
end;

function
  ActivatePreviousInstance(WndClass: PChar): boolean;
var
  Wnd: HWND;
begin

  Result := false;
  if (CheckAppRun = 1) then
  begin
    if (WndClass <> nil) then
    begin
      {если окно программы указано сделать его активным в системе}
      Wnd := FindWindow(WndClass, nil);
      if (Wnd <> 0) then
      begin
        {Хочу отобразить мое приложение, но оно не отображается}
        SwitchToThisWindow(Wnd, True);
      end;
    end
    else
      MessageBox(0, 'Приложение уже запущено!', 'Сообщение',
        MB_ICONINFORMATION or MB_OK);
    Result := true;
  end;
end;

if ActivatePreviousInstance('TMainForm') then Halt(1);
Для отображения своего приложения я использовал SwitchToThisWindow(Wnd, True), но оно не отображается. Я использовал ShowWindow(Wnd, SW_SHOWMAXIMIZED) окно отображается, но после такой операции его нельзя свернуть.
Так как же правильно отобразить свое приложение не зависимо от того минимизировано оно или нет?
Ramin Hashimzade
Дата: 16.10.2006 11:44:08
есть такая фича в интернете "RunOnce", помоему я на свой сайт тоже поставил, поиши и будет тебя щястие!

----
www.hramin.jino-net.ru
Картинка с другого сайта.
DelphiLexx
Дата: 16.10.2006 11:51:54
Ramin
есть такая фича в интернете "RunOnce", помоему я на свой сайт тоже поставил, поиши и будет тебя щястие!

----
www.hramin.jino-net.ru
Картинка с другого сайта.

Что-то я не нашел на твоем сайте RunOnce
Ramin Hashimzade
Дата: 16.10.2006 11:55:44
хммм... наверно не поставил поиши в интернете!

----
www.hramin.jino-net.ru
Картинка с другого сайта.
alex0
Дата: 16.10.2006 12:04:16
H := FindWindow(PChar('TMainForm'),PChar(ProgramCaption));
ShowWindow(H,SW_SHOW);
SetForegroundWindow(H);
DelphiLexx
Дата: 16.10.2006 12:16:30
alex0
H := FindWindow(PChar('TMainForm'),PChar(ProgramCaption));
ShowWindow(H,SW_SHOW);
SetForegroundWindow(H);

Не работает как нужно - если приложение было минимизированное, то твой код восстановит его из taskbar'a, но при нажатии кнопки, предназначенная для сворачивания приложения (данная кнопка расположена на заголовке приложения, там же где и кнопка закрытия приложения) оно не сворачивается.