只让程序运行一个实例,怎么实现已经运行的实例获得焦点并正常显示

只让程序运行一个实例,如何实现已经运行的实例获得焦点并正常显示 ?
已经实现只让程序运行一个实例,但我想再次双击这程序时能正常显示该程序

在下代码中,发送ShowWindow(iHandle,SW_SHOWMAXIMIZED),这可以再次显示程序,但这是最大化显示,我想实现的是正常显示

而且我试过其他参数,如SW_NORMAL 之类的都不行

请问要如何修改才能实现我的要求呢 ? 谢谢

program Project1;

uses
  Forms,Windows,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
const
  iAtom='MyApplication';
var
  iHandle:THandle;
begin
  if GlobalFindAtom(iAtom)=0 then
  begin
  GlobalAddAtom(iAtom);
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  GlobalDeleteAtom(GlobalFindAtom(iAtom));
  end
  else if Application.MessageBox('程序已经在运行! ','提示',MB_YESNO+MB_ICONASTERISK)=IDYES then
  begin
  iHandle:=FindWindow(nil,'Form1');
  if iHandle <> 0 then
  ShowWindow(iHandle,SW_SHOWMAXIMIZED);
  end;
end.

------解决方案--------------------
看我的:
http://blog.csdn.net/linzhengqun/archive/2005/12/29/564646.aspx