Показать сообщение отдельно
  #13  
Старый 02.12.2013, 17:46
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Такой глюк возникает из-за того, что в ShowWindow нужно указывать хэндл не "главной" формы, а главного окна, т.е. Application.

У себя я делал проще - создавал собственное сообщение - примерно так:
Код:
const
  MY_RESTORE = WM_APP + 1;

type
  TfrmMain = class(TForm)
.....
  private
    { Private declarations }
    procedure MyRestore(var Message: TMessage); message MY_RESTORE;
.....
implementation
.....
procedure TfrmMain.MyRestore(var Message: TMessage);
begin
  Application.Restore;
end;

тогда в файле проекта будет примерно так:
Код:
var
  h: HWND;
begin
  h := FindWindow('TfrmMain', '%form_title%');

  if h <> 0 then
  begin
    SendMessage(h, MY_RESTORE, 0, 0);
    SetForeGroundWindow(h);
  end else
  begin
    Application.Initialize;
    Application.CreateForm(TfrmMain, frmMain);
    Application.Run;
  end;
end.
Ответить с цитированием