h:= findwindow('SciCalc',nil);
  if h=0 then
    winexec('calc.exe',SW_SHOW)
  else
  begin
    ShowWindow(h,SW_RESTORE);
    SetForegroundWindow(h);
  end;显示位置该如何确定?

解决方案 »

  1.   

    setwindowpos(h,left,top,0,0,SWP_NOSIZE)
      

  2.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      h : Hwnd;
      info : tagWINDOWINFO;
    begin  h:= findwindow('SciCalc',nil);
      if h=0 then
      begin
        winexec('calc.exe',SW_HIDE);
      end ;
      h:= findwindow('SciCalc',nil);
      if h <> 0  then
      begin
          SetWindowPos(h,0,0,0,info.rcWindow.Right-info.rcWindow.Left,
                   info.rcWindow.Bottom - info.rcWindow.Top,SWP_NOSIZE);
        ShowWindow(h,SW_RESTORE);
        GetWindowInfo(h,info);    SetForegroundWindow(h);
      end;
    end;