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;
         }
     }
 }
Ejemplo n.º 3
0
 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);
     }
 }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
 /// <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);