ここに、IAdviseSink
インターフェイスを実装して、私のTForm1
クラスに新しく作成されたMSWordドキュメントのイベントをキャッチするコードを示します。コードを実行している間はエラーはありませんが、ドキュメントを保存したり閉じたりしても、イベントを捕捉することはできません。 MSWord文書用にIAdviseSink
を正しく設定するにはどうすればよいですか?MSWordドキュメントイベントを捕捉するためのIAdviseSinkセットアップ
var
Form1 : TForm1;
doc_ole_obj : IOleObject;
word : IDispatch;
Connection: LongInt;
implementation
//------------ Setup IAdviseSink
procedure TForm1.Setup;
begin
word := CreateOleObject('Word.Application');
OleVariant(word).Visible := True;
IUnknown(OleVariant(word).Documents.Open('file.doc')).QueryInterface(IOleObject,doc_ole_obj);
doc_ole_obj.Advise(IAdviseSink(Self), Connection);
end;
//------------- catch Sink events
procedure TForm1.OnSave;
begin
Caption := 'saved at ' + TimeToStr(Now);
end;
この設定では、ドキュメントを閉じるときにOnCloseが正常に発生します。新しい名前で再度保存すると、 'OnRename' OnRename 'が発生します。何がありますか? –
'OnClose'の例[here](http://stackoverflow.com/a/2886747/243614)、他のイベントをテストしていません。 –