尝试使用C#打开PowerPoint文件时抛出异常

时间:2015-11-12 18:56:15

标签: c# powerpoint

我正在开发我的第一个C#应用程序。我试图以全屏模式打开PowerPoint文件。代码需要cmd参数。我将powerpoint test.pptm放在与我的应用程序的输出(调试和发布)相同的文件夹中。我写了以下代码:

        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.CreateNoWindow = false;
        startInfo.UseShellExecute = false;
        startInfo.FileName = "powerpnt.exe";
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
        startInfo.Arguments = "/s test.pptm";

        try
        {
            using (Process exeProcess = Process.Start(startInfo))
            {
                exeProcess.WaitForExit();
            }
        }
        catch
        {
        }

代码编译,但当我尝试通过按钮运行此代码时,控制台指出:

Exception thrown: 'System.ComponentModel.Win32Exception' in System.dll

我尝试通过更改以下行直接引用pptm文件:

startInfo.Arguments = "/s c:\path\to\full\file\test.pptm";

我收到一条错误,指出Unrecognized escape sequence。有谁之前经历过这个吗?我已经被困在这一段时间了。谢谢!

1 个答案:

答案 0 :(得分:4)

使用@符号

添加文件路径
startInfo.Arguments = @"/s c:\path\to\full\file\test.pptm";

来自MSDN

  

逐字字符串文字由@字符后跟双引号字符,零个或多个字符以及结束双引号字符组成。一个简单的例子是@"你好"。在逐字字符串文字中,分隔符之间的字符被逐字解释,唯一的例外是quote-escape-sequence。

https://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx

关于使代码运行的一些指示

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;            
startInfo.FileName = "powerpnt.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = @"/s ""fullpath with spaces in file names""";
  1. 注意完整路径之前和之后的转义双引号。这是为了容纳文件名或目录中的空格
  2. 删除行startInfo.UseShellExecute = false