如何使用C#Console应用重新启动Outlook(关闭然后打开Outlook)



我想每次打开控制台应用时都要重新启动Outlook,我都会在PC服务器上部署此应用程序,因为假期时没有人会处理此应用程序。

为什么我要重新启动Outlook?因为服务器PC中的Outlook会收到许多电子邮件,所以我们有应用程序来获取附件并每天下载它。但是问题有时是电子邮件被卡住了,我们必须重新启动Outlook才能获得陷入困境的电子邮件。

我已经尝试了一些代码,并且用于process.start->它可以打开Outlook,但我无法关闭重复的Outlook(旧一个(

namespace CloseOpenOutlook
{
    class Program
    {
        static void Main(string[] args)
        {

            Process process = Process.GetCurrentProcess();
            var dupl = Process.GetProcessesByName(process.ProcessName);

            foreach (var p in dupl)
            {
                if (p.ProcessName == "OUTLOOK")
                {
                    p.Kill();
                }
            }
            Process myProcess = Process.Start("OUTLOOK");
        }
    }
}

预期结果=它将关闭旧的外观并打开新的

实际结果=它打开了新的结果,而不是关闭旧的结果,所以它将是2个Outlooks

我不知道在哪里出错,已经从许多来源尝试,但仍然无法正常工作

使用C#。

关闭Outlook有两种主要方法

1(杀死该过程,使用processID进行,否则您将关闭Outlook的所有实例:

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern int GetWindowThreadProcessId(HandleRef handle, out int processId);
private void OpenOutlookAndKillProcess()
{
   int pid = -1;
   //Get PID
   outlookApp = new Outlook.Application();
   HandleRef hwnd = new HandleRef(outlookApp, (IntPtr)outlookApp.Hwnd);
   GetWindowThreadProcessId(hwnd, out pid);
   .....
   //Finally
   KillProcess(pid,"OUTLOOK");
}
private void KillProcess(int pid, string processName)
{
    System.Diagnostics.Process[] AllProcesses = System.Diagnostics.Process.GetProcessesByName(processName);
    foreach (System.Diagnostics.Process process in AllProcesses)
    {
       if (process.Id == pid) process.Kill();
    }
    AllProcesses = null;
}

2(更好的方法是使用autorelealeasecomobject或原始的vsto -contrib,您可以在此处看到我的一个关于如何使用它的答案:关闭Excel Workbook -system.runtime.interime.interopservices.comexception.comexception.comexception.Comexception.Comexception:exception from hresult:0x800A03EC:0x800A03EC

在此处解释了您遇到的内容(与Excel,Word,PowerPoint相同的方式相关(:我如何正确清理Excel Interop对象?

您可能会发现它更容易 1(杀死该过程,但更好的程序员将使用 2(

相关内容

最新更新