public void app_WindowBeforeRightClick(Word.Selection selection, ref bool Cancel) { if (null == selection) { return; } range = selection.Range; switch (selection.Type) { case Word.WdSelectionType.wdSelectionIP: range.Expand(Word.WdUnits.wdWord); // expand range to be a whole word break; case Word.WdSelectionType.wdSelectionNormal: // word(s) selected break; default: return; } // Trim range, so when we replace the query we don't trample on the spaces between words while (range.Characters.First.Text == " ") { range.MoveStart(Word.WdUnits.wdCharacter); } while (range.Characters.Last.Text == " ") { range.MoveEnd(Word.WdUnits.wdCharacter, -1); } if (!string.IsNullOrEmpty(range.Text)) { ShowMenu(range.Text); } }