public override void Fix(Word.Document doc, int hwnd, out MsoDocInspectorStatus status, out string result) { Word.Range range = doc.Content; Word.Find find = range.Find; int replacedLinks = 0; foreach (KeyValuePair <int, string> item in InspectResult) { string uri = TryGetBitlyRedirectUrl(item.Value); if (!String.IsNullOrWhiteSpace(uri)) { if (find.Execute(item.Value, null, null, null, null, null, null, null, null, uri)) { replacedLinks++; } } } if (replacedLinks == InspectResult.Count) { status = MsoDocInspectorStatus.msoDocInspectorStatusDocOk; result = "All links have been replaced."; } else { status = MsoDocInspectorStatus.msoDocInspectorStatusError; result = "Unable to replace one or more link(s)."; } }
void Office.Native.IDocumentInspector.Fix(object Doc, Int32 Hwnd, out MsoDocInspectorStatus Status, out string Result) { try { Word.Document document = new Word.Document(Factory, null, Doc); try { Fix(document, Hwnd, out Status, out Result); } catch { Status = MsoDocInspectorStatus.msoDocInspectorStatusError; Result = null; throw; } finally { TryDisposeDocumentInspectorDocument(document); } } catch (Exception exception) { Status = MsoDocInspectorStatus.msoDocInspectorStatusError; Result = null; if (!OnBaseError(exception)) { throw; } } }
void IDocumentInspector.Fix(object Doc, Int32 Hwnd, out MsoDocInspectorStatus Status, out string Result) { Word.Document document = null; try { if (null != CurrentInspector) { document = new Word.Document(Factory, null, Doc); CurrentInspector.Fix(document, Hwnd, out Status, out Result); return; } else { Status = MsoDocInspectorStatus.msoDocInspectorStatusError; Result = null; } } catch { Status = MsoDocInspectorStatus.msoDocInspectorStatusError; Result = null; throw; } finally { TryDisposeDocumentInspectorDocument(document, Doc); } }
void IDocumentInspector.Inspect(object Doc, out MsoDocInspectorStatus Status, out string Result, out string Action) { Word.Document document = null; try { if (null != CurrentInspector) { document = COMObject.Create <Word.Document>(Factory, Doc); CurrentInspector.Inspect(document, out Status, out Result, out Action); return; } else { Status = MsoDocInspectorStatus.msoDocInspectorStatusError; Result = null; Action = null; } } catch { Status = MsoDocInspectorStatus.msoDocInspectorStatusError; Result = null; Action = null; throw; } finally { TryDisposeDocumentInspectorDocument(document, Doc); } }
/// <summary> /// /// </summary> /// <param name="Doc"></param> /// <param name="Status"></param> /// <param name="Result"></param> /// <param name="Action"></param> void Office.Native.IDocumentInspector.Inspect(object Doc, out MsoDocInspectorStatus Status, out string Result, out string Action) { try { Word.Document document = COMObject.Create <Word.Document>(Factory, Doc); try { Inspect(document, out Status, out Result, out Action); } catch { Status = MsoDocInspectorStatus.msoDocInspectorStatusError; Result = null; Action = null; throw; } finally { TryDisposeDocumentInspectorDocument(document); } } catch (Exception exception) { Status = MsoDocInspectorStatus.msoDocInspectorStatusError; Result = null; Action = null; if (!OnBaseError(exception)) { throw; } } }
/// <summary> /// SupportByVersion Office 12, 14, 15, 16 /// </summary> /// <remarks> Docs: <see href="https://docs.microsoft.com/en-us/office/vba/api/Office.IDocumentInspector.Fix"/> </remarks> /// <param name="doc">object doc</param> /// <param name="hwnd">Int32 hwnd</param> /// <param name="status">NetOffice.OfficeApi.Enums.MsoDocInspectorStatus status</param> /// <param name="result">string result</param> protected abstract void Fix(Word.Document doc, Int32 hwnd, out MsoDocInspectorStatus status, out string result);
/// <summary> /// SupportByVersion Office 12, 14, 15, 16 /// </summary> /// <remarks> Docs: <see href="https://docs.microsoft.com/en-us/office/vba/api/Office.IDocumentInspector.Inspect"/> </remarks> /// <param name="doc">object doc</param> /// <param name="status">NetOffice.OfficeApi.Enums.MsoDocInspectorStatus status</param> /// <param name="result">string result</param> /// <param name="action">string action</param> protected abstract void Inspect(Word.Document doc, out MsoDocInspectorStatus status, out string result, out string action);
public override void Inspect(Word.Document doc, out MsoDocInspectorStatus status, out string result, out string action) { InspectResult.Clear(); Cache.Clear(); Word.Range range = doc.Content; Word.Find find = range.Find; find.Forward = true; find.Text = "http*"; find.MatchWildcards = true; if (find.Execute()) { int start = range.Start; while (start > 0) { string text = String.Empty; Word.Range character = range.Characters[1]; while (null != character) { string characterText = character.Text; bool isEndLink = false; foreach (string item in _linkEnds) { if (characterText == item) { isEndLink = true; break; } } if (!isEndLink) { text += character.Text; character = character.Next(); } else { break; } } foreach (string item in _bitly) { if (text.StartsWith(item)) { InspectResult.Add(start, text); break; } } if (!find.Execute()) { break; } start = range.Start; } } if (InspectResult.Count > 0) { status = MsoDocInspectorStatus.msoDocInspectorStatusIssueFound; result = String.Format("{0} link(s) found.", InspectResult.Count); action = "Deobfuscate Links."; } else { status = MsoDocInspectorStatus.msoDocInspectorStatusDocOk; result = "No links found."; action = "No links to change."; } }
/// <summary> /// Performs some action on specific information items or document properties by using a custom Document Inspector module. /// </summary> /// <param name="doc">Specifies an object representing the container object.</param> /// <param name="hwnd">Specifies the unique identifier of the active document window.</param> /// <param name="status">Specifies an enumeration that indicates the status of the action.</param> /// <param name="result">Contains the results of the action.</param> public abstract void Fix(Word.Document doc, int hwnd, out MsoDocInspectorStatus status, out string result);