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.