這裏是我嘗試設置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着火了。是什麼賦予了? – 2011-12-24 16:12:55
'OnClose'示例[here](http://stackoverflow.com/a/2886747/243614),但我沒有測試其他事件,然後.. – 2011-12-24 16:20:30