5

Word オートメーションを使用してドキュメントを作成する Borland Delphi で作成されたプログラムがあります。インストール (ターミナル サーバー) では、ローカル管理者として実行している場合にのみ、Word 自動化を機能させることができます。
別のユーザーとして実行すると、「Opdracht mislukt -2146824090」(Office のオランダ語版) というエラー メッセージが表示されます。

ユーザーは、プログラムが新しいドキュメントを配置しようとするフォルダーへの読み取り/書き込みアクセス権を持っています。

Office 2010
64 ビット Windows サーバー 2008 R2 標準

アプリケーションは 32 ビット Windows アプリケーションです。

word.application の作成後に遅延 (500ms) を追加すると、すべてが正常に機能します。

WordApp   := CreateOleObject('Word.Application');
sleep(500);
Doc := WordApp.documents.Open(sFile,EmptyParam,true);

Word アプリケーションを使用する前に CreateOleObject コマンドが返されるようになった理由を知っている人はいますか?

4

4 に答える 4

1

ドキュメントを数回開こうとすることができますか、それともエラーが発生した後にWordが完全に中断されますか?

WordApp := CreateOleObject('Word.Application');

while True do
begin
  try
    Doc := WordApp.documents.Open(sFile,EmptyParam,true);
    Break;
  except
    on E: EOleSysError do
    begin
      // raise error if it's not the expected "Command failed" error
      if E.ErrorCode <> -2146824090 then
        raise;
    end;
  end;
end;

編集:

より良い解決策とこれが起こる理由の説明を提供する私の答えをここで見てください。

于 2011-01-04T10:40:45.990 に答える
1

それを追跡したい場合は、ProcessMonitorなどのツールを使用して、アプリを使用できるようになるまで Word オートメーションの実行を追跡できます。

ある種の権利チェックが行われているようですが、これだけでは 0.5 秒では時間がかかりすぎます。

于 2010-10-26T16:16:42.760 に答える
0

遅滞なく機能する管理者アカウントには、実行する権限がないように見えますが、Word は通常のドメイン ユーザー アカウントよりもこのアカウントではるかに高速に起動します。

私は遅延回避策で生活できますが、誰かがより良い方法を知っているなら、私に知らせてください.

于 2010-10-28T07:48:32.603 に答える