C# 如何在窗体的命令提示符中使用Outlook开关?

C# 如何在窗体的命令提示符中使用Outlook开关?,c#,string,command-line,outlook,switch-statement,C#,String,Command Line,Outlook,Switch Statement,我正在尝试创建一个程序,该程序将使用outlook开关创建一个新的outlook邮件,其中预填充了详细信息 如果我在命令提示符下,以下命令将成功创建一条新的空白消息 "C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE" /c ipm.note 我在这里找到了几篇关于如何在c#中使用命令提示符的帖子,并尝试从c#运行相同的开关命令,但它在命令提示符框中给出了一个错误,该错误会闪烁:ipm.note不能识别为内部或外部命令、可

我正在尝试创建一个程序,该程序将使用outlook开关创建一个新的outlook邮件,其中预填充了详细信息

如果我在命令提示符下,以下命令将成功创建一条新的空白消息

"C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE" /c ipm.note
我在这里找到了几篇关于如何在c#中使用命令提示符的帖子,并尝试从c#运行相同的开关命令,但它在命令提示符框中给出了一个错误,该错误会闪烁:
ipm.note不能识别为内部或外部命令、可操作程序或批处理文件。

我知道ipm.note对于开关来说是正确的,但显然当在C代码中传递它时,它遗漏了什么?可能是一个逃避角色?这是我正在使用的代码

System.Diagnostics.Process.Start(“CMD.exe”,“C:\\ProgramFiles(x86)\\Microsoft Office\\Office14\\OUTLOOK.exe\”/C ipm.note”)

同样关于这一点,我希望能够使用@符号,这样我就不必转义每个特殊字符,但我不知道您是否可以使用它并在字符串中添加引号,例如:

string temp=@“C:\Program Files(x86)\Microsoft Office\Office14\OUTLOOK.EXE”/C ipm.note”
在上面的例子中,第一组引号打开并关闭,然后关闭所有内容,直到下一组引号不被视为字符串的一部分


非常感谢您对这两种情况的建议。

您还需要将/c开关传递到cmd.exe。试试这个:

Process.Start("cmd.exe", @"/c """"C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE"" /c ipm.note""");
不过,直接运行outlook.exe并避免许多参数问题实际上要好得多:

Process.Start(@"C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE", "/c ipm.note");

关于以@字符为前缀的字符串,这些字符串称为逐字字符串文字。您可以像我在代码片段中所做的那样,将两个双引号一起使用,在其中一个双引号中包含一个双引号。

正是我所需要的。修复了这两个问题。谢谢。若要添加更多交换机,我是否必须像您使用/c时一样在Begging添加交换机?:@“/c/m”“c:\Program Files(x86)\Microsoft Office\Office14\OUTLOOK.EXE”“/c ipm.note/mhere@there.com"""; 我没有太多的运气让它接受到地址开关。实际上你根本不需要通过cmd.exe路由调用。这里有一个简化的版本,它应该可以工作,而且更直接一些:
Process.Start(@“C:\ProgramFiles(x86)\Microsoft Office\Office14\OUTLOOK.EXE”,“/C ipm.note/mhere@there.com");那好多了,谢谢。也许在你的原始答案后面加上这个,只是为了将来发现这个的人。请添加一些描述,比如这是一个怎样的解决方案。
System.Diagnostics.Process.Start(@"C:\Program Files (x86)\Microsoft Office\Office15\OUTLOOK.EXE", @"/a C:\Users\Abu18saud.Abu18saud-PC.001\Documents\file_hml.pdf /m username@gmail.com /c ipm.note");