MSHTML コントロールのアンドゥ スタックをクリアするには、アンドゥ マネージャ サービスを使用できます。
元に戻すサービスを有効または無効にすると、元に戻すスタックがクリアされます。MSHTML の Document オブジェクトからアンドゥ マネージャを抽出するには、IServiceProvider を使用する必要があります。
これに対する解決策は、次のようなものです。
//Extract undo manager
if (m_undoManager == null)
{
IServiceProvider serviceProvider = Document as IServiceProvider;
Guid undoManagerGuid = typeof(IOleUndoManager).GUID;
Guid undoManagerGuid2 = typeof(IOleUndoManager).GUID;
IntPtr undoManagerPtr = ComSupport.NullIntPtr;
int hr = serviceProvider.QueryService(ref undoManagerGuid2, ref undoManagerGuid, out undoManagerPtr);
if ((hr == HRESULT.S_OK) && (undoManagerPtr != ComSupport.NullIntPtr))
{
m_undoManager = (IOleUndoManager)Marshal.GetObjectForIUnknown(undoManagerPtr);
Marshal.Release(undoManagerPtr);
}
}
//And to clear the stack
m_undoManager.Enable(true);
Application.DoEvents();
より詳細な実装と詳細については、次の場所で確認できます。
http://postxing.net:8080/PostXING/tags/v1.1/PostXING.HtmlComponent/Html/
http://msdn.microsoft.com/en-us/library/ms678623(VS.85).aspx