procedure TForm1.BitBtn4Click(Sender: TObject);
var
  FWord, FDoc: OleVariant;
  FHandle: THandle;
  abcd: HWND;
begin
  try
    FWord := GetActiveOleObject('Word.Application');
  except
    FWord := CreateOleObject('Word.Application');
  end;
  FDoc := FWord.Documents.Add; 
  FDoc.SaveAs('C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\Text.doc');
  FWord.Visible := True;
  Application.MainForm.Hide;
  FHandle := FindWindow(nil, PChar('Text.doc - Microsoft Word'));
  //想在这里使外部程序“WORD”退出后再接着执行
  while WaitForSingleObject(FHandle, 5) = WAIT_TIMEOUT do   
    Application.ProcessMessages;
  Application.MainForm.Show;
end;

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
      procedure ShellExecute_AndWait(FileName: string);
      var
        exInfo: TShellExecuteInfo;
        Ph    : DWORD;
      begin
        FillChar(exInfo, SizeOf(exInfo), 0);
        with exInfo do
        begin
          cbSize:= SizeOf(exInfo);
          fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
          Wnd   := GetActiveWindow();
          ExInfo.lpVerb :='open';
          lpFile := PChar(FileName);
          nShow  := SW_SHOWNORMAL;
        end;
        if ShellExecuteEx(@exInfo) then
        begin
          Ph := exInfo.HProcess;
        end
        else
        begin
          ShowMessage(SysErrorMessage(GetLastError));
          Exit;
        end;
        while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
          Application.ProcessMessages;
          CloseHandle(Ph);
        end;
    begin
       ShellExecute_AndWait('Project2.exe');
    end;
      

  2.   

    失踪的月亮?
    我上面的程序是什么地方出问题了?我是要对Word操作
      

  3.   

    找到问题在什么地方的,主要是FHandle := FindWindow(nil, PChar('Text.doc - Microsoft Word')); 
    这句得到的句柄不对,请问如何得到FWord的句柄?
      

  4.   

    找到问题在什么地方的,主要是FHandle := FindWindow(nil, PChar('Text.doc - Microsoft Word'));  
    这句得到的句柄不对,请问如何得到FWord的句柄?