如何触发特定 outlook VSTO 插件的 OnRead 事件?
How to trigger OnRead event for particular outlook VSTO addin?
我想测试(fuzz)outlook 插件。主要思想是开发插件(邮件生成器),它将 emulate\trigger 打开邮件以供我的目标插件处理。是否可以为目标插件发出 OnRead 事件?
我认为我的代码一定能解决问题,但事实并非如此:
string progId = "target_addin_progid";
var obj = (OUTLOOKADDINLib.ItemNotifications) Application.CreateObject(progId);
var msg = Application.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;
msg.Body = "email body";
obj.ItemRead(msg);
我使用调试器来确保上述代码不会到达目标插件处理逻辑。如何使用插件模拟邮件阅读?
Outlook 对象模型不提供任何方法或 属性 来立即触发事件。您需要重现触发事件的条件。
您可以模拟 MailItem 的 Read
事件,方法是将其保存在磁盘上并将 Selection
从另一项更改为触发事件所需的项,或者只是简单地尝试通过调用 MailItem
class 的 Display
方法在检查器 window 中打开它。
我想测试(fuzz)outlook 插件。主要思想是开发插件(邮件生成器),它将 emulate\trigger 打开邮件以供我的目标插件处理。是否可以为目标插件发出 OnRead 事件?
我认为我的代码一定能解决问题,但事实并非如此:
string progId = "target_addin_progid";
var obj = (OUTLOOKADDINLib.ItemNotifications) Application.CreateObject(progId);
var msg = Application.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;
msg.Body = "email body";
obj.ItemRead(msg);
我使用调试器来确保上述代码不会到达目标插件处理逻辑。如何使用插件模拟邮件阅读?
Outlook 对象模型不提供任何方法或 属性 来立即触发事件。您需要重现触发事件的条件。
您可以模拟 MailItem 的 Read
事件,方法是将其保存在磁盘上并将 Selection
从另一项更改为触发事件所需的项,或者只是简单地尝试通过调用 MailItem
class 的 Display
方法在检查器 window 中打开它。