从Web应用程序启动Outlook并打开特定的日历条目

时间:2017-12-13 12:15:22

标签: c# outlook exchangewebservices asp.net-core-2.0

我需要在Web应用程序仪表板视图中显示下个月的用户日历条目。

我已成功使用Exchange Web服务来实现此文档:

https://msdn.microsoft.com/en-us/library/office/dn495614(v=exchg.150).aspx

此任务的最终要求是,如果用户点击该条目(在他们的浏览器中):

Outlook应该在他们的计算机上打开并直接进入实际的日历条目

我已经检查了约会对象,我可以看到我可以访问日历ID,我可以很容易地将其传递给服务器但是从这里我很困惑,我怎么可以启动应用程序在他们的机器上并告诉它打开该条目Id。

这会是另一个EWS电话还是Office.Interop.Outlook,它甚至可能吗?

如果这使得它变得更加困难,那么这是一个.Net Core 2.0 Web应用程序。

2 个答案:

答案 0 :(得分:1)

Outlook仍然接受命令行开关,其中一个允许您打开Outlook项目/select

现在,您只需创建一个URL,使用命令行参数启动Outlook。

对于IE,假设您的Web应用程序受信任,这并不太难:

javascript:(new ActiveXObject('Shell.Application')).ShellExecute('outlook.exe','/select outlook:<entryid>');

对于Chrome,您可以发送cmd文件或创建已下载的帮助程序exe,但用户必须手动选择打开才能启动它。

答案 1 :(得分:0)

Active X不适用于所有现代浏览器,例如chrome,IEEdge,firefox和safari。或者,您可以在下面的注册表项中创建并锚定链接/按钮以打开Outlook日历

下面是标记

<button id="outlookCalendarBtn" onclick="window.open('outlookwebcal:')">
   Open Outlook Calendar
</button>

在注册表项下面创建

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\outlookwebcal]
@="URL:Outlook Add Internet Calendar"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\outlookwebcal\shell]
@="open"

[HKEY_CLASSES_ROOT\outlookwebcal\shell\open]

[HKEY_CLASSES_ROOT\outlookwebcal\shell\open\command]
@="\"C:\\Program Files\\Microsoft Office\\root\\office16\\Outlook.exe\" /select outlook:calendar"