如何在不使用电源外壳或其他使用 C++、MFC/MAPI 的应用程序的情况下运行 Outlook.exe 时将参数传递给它?

问题描述

我的插件是用 MAPI C++ 编写的,用于 Outlook。

一个要求,如果用户执行 gal 删除,我想清除 Outlook 的缓存,其中有一个开关 /CleanAutoCompleteCache 将清除 Outlook 的整个 AutoComplete 列表。

现在我知道我可以通过任何 power shell 脚本或其他东西来做到这一点,但我只想通过我的代码来做到这一点。即 Outlook 自动重新启动的代码

有没有办法在用户通过双击图标或 Outlook.exe 文件打开 Outlook 时传递此 /CleanAutoCompleteCache 开关?

解决方法

您可以在应用程序启动新进程时指定命令行参数,例如,要启动外部应用程序,您可以使用以下代码:

#include <stdlib.h>
...
system("cmd.exe")

第二个参数允许指定参数。

但是,您需要先关闭 Outlook,然后才能启动新实例并应用命令行参数来清除自动完成列表。因此,您可以开发一个可以使用指定命令行启动 Outlook 的外部应用程序,但应从您的加载项中安排该应用程序在 outlook.exe 进程不存在时运行。因此,在您的 VSTO 加载项中,您可以安排外部应用程序(或者只是运行它并等待 Outlook 从正在运行的应用程序列表中退出)并关闭 Outlook(请参阅 Application类)。