使用Process.Start()打开.msg文件

时间:2015-02-16 04:05:42

标签: c# outlook process.start

ProcessStartInfo startInfo = new ProcessStartInfo();
Process first = new Process();   
startInfo.FileName = "OUTLOOK";
                    startInfo.Arguments = "http:\\blabla.com\EMAIL.msg";
                    startInfo.CreateNoWindow = true;                        
                    first.StartInfo = startInfo;
                    first.Start();

我使用Process.Start启动Outlook并打开.Msg文件。如何在不打开Outlook的多个进程/线程/实例的情况下重用相同的进程来打开另一个.msg文件?

我尝试了类似

的内容
Process[] outlook = Process.GetProcessesByName("OUTLOOK");
Process existing = outlook[0];
                    startInfo.FileName = "outlook";
                    startInfo.Arguments = "http:\\blabla.com\2ndEMAIL.msg";
                    startInfo.CreateNoWindow = true;
                    existing.StartInfo = startInfo;
                    existing.Start();                         

重用相同的进程,但我仍然打开outlook的多个窗口,而不仅仅是.MSG文件

4 个答案:

答案 0 :(得分:0)

略微修改您的代码,这可能会有效。

var first = new Process();
var pinfo = new ProcessStartInfo
            {
                FileName = "http:\\blabla.com\EMAIL.msg",
                Arguments = "/quiet",
                CreateNoWindow = true
            };
first.StartInfo = pinfo;
first.Start();

答案 1 :(得分:0)

只能同时运行一个Outlook实例。

  

如何在不打开outlook的多个进程/线程/实例的情况下重用相同的进程来打开另一个.msg文件?

您可以使用Process.Start方法在Outlook中打开邮件。无需指定Outlook,只需指定.msg文件的路径。

请注意,Outlook中的Application类为您提供了CreateItemFromTemplate方法。它根据指定的模板创建一个新的Outlook项目,并返回新创建的Outlook项目。您可以使用它来创建基于.MSG文件的Outlook项目。有关详细信息,请参阅How To: Create a new Outlook message based on a template

答案 2 :(得分:0)

如果要关闭已打开的Outlook邮件,则您有责任这样做 - 使用Application.Inspectors集合枚举Outlook当前显示的所有邮件并关闭它们。

答案 3 :(得分:0)

就这样做

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSDictionary *dic=[self.itemsInTable objectAtIndex:indexPath.row];
    if([dic valueForKey:@"SubItems"])
    {
        NSArray *arr=[dic valueForKey:@"SubItems"];
        BOOL isTableExpanded=NO;

        for(NSDictionary *subitems in arr )
        {
            NSInteger index=[self.itemsInTable indexOfObjectIdenticalTo:subitems];
            isTableExpanded=(index>0 && index!=NSIntegerMax);
            if(isTableExpanded) break;
        }

        if(isTableExpanded)
        {
            [self CollapseRows:arr];
        }
        else
        {
            // NEED TO ADD SECOND CELL HERE
            NSUInteger count=indexPath.row+1;
            NSMutableArray *arrCells=[NSMutableArray array];
            for(NSDictionary *dInner in arr)
            {
                [arrCells addObject:[NSIndexPath indexPathForRow:count inSection:0]];
                [self.itemsInTable insertObject:dInner atIndex:count++];
            }
            [self.main_tableview insertRowsAtIndexPaths:arrCells withRowAnimation:UITableViewRowAnimationNone];
        }
    }
}