Outlook Interop - 在光标位置插入字符串
Outlook Interop - insert string at cursor location
我目前正在使用 Outlook 互操作在光标位置插入一些文本。
我有一个用于插入电子邮件和日历的有效解决方案 body,但我似乎无法找到任何可以让我找到光标位置(焦点元素)的地方。
我正在使用 CurrentItem 来确保我有正确的项目,但想知道重点是什么项目,所以在 MailItem 中是:body、主题、收件人、抄送和密件抄送。然后对于 CalendarItem 是重点 body 或标题。
有没有办法从 CurrentItem 找到 keyboard/cursor 焦点所在的位置?
我目前用于注入 body 的工作解决方案:
var outlookAsObject = Marshal.GetActiveObject("Outlook.Application");
_outlook = (Microsoft.Office.Interop.Outlook.Application) outlookAsObject;
_log.Info("Outlook Application found");
var activeElement = _outlook.ActiveInspector().CurrentItem;
_log.Info($"outlook injector: Current item is mailItem: {activeElement is
MailItem}");
Inspector myInspector = activeElement.GetInspector;
_log.Info("outlook injector: inspector obtained");
Document wdDoc = myInspector.WordEditor;
_log.Info("outlook injector: document obtained");
var wdRng = wdDoc.Application.Selection.Range;
_log.Info($"outlook injector range is: {wdRng}");
wdRng.InsertAfter(text);
_log.Info("outlook injector: Text sent");
完成工作没有简单的方法。 Outlook 扩展性模型不提供开箱即用的信息。
最好的办法是使用 Windows API 对 Outlook window 进行子类化。您也可以尝试使用 Accessibility API.
我目前正在使用 Outlook 互操作在光标位置插入一些文本。
我有一个用于插入电子邮件和日历的有效解决方案 body,但我似乎无法找到任何可以让我找到光标位置(焦点元素)的地方。
我正在使用 CurrentItem 来确保我有正确的项目,但想知道重点是什么项目,所以在 MailItem 中是:body、主题、收件人、抄送和密件抄送。然后对于 CalendarItem 是重点 body 或标题。
有没有办法从 CurrentItem 找到 keyboard/cursor 焦点所在的位置?
我目前用于注入 body 的工作解决方案:
var outlookAsObject = Marshal.GetActiveObject("Outlook.Application");
_outlook = (Microsoft.Office.Interop.Outlook.Application) outlookAsObject;
_log.Info("Outlook Application found");
var activeElement = _outlook.ActiveInspector().CurrentItem;
_log.Info($"outlook injector: Current item is mailItem: {activeElement is
MailItem}");
Inspector myInspector = activeElement.GetInspector;
_log.Info("outlook injector: inspector obtained");
Document wdDoc = myInspector.WordEditor;
_log.Info("outlook injector: document obtained");
var wdRng = wdDoc.Application.Selection.Range;
_log.Info($"outlook injector range is: {wdRng}");
wdRng.InsertAfter(text);
_log.Info("outlook injector: Text sent");
完成工作没有简单的方法。 Outlook 扩展性模型不提供开箱即用的信息。
最好的办法是使用 Windows API 对 Outlook window 进行子类化。您也可以尝试使用 Accessibility API.