Такой глюк возникает из-за того, что в 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.