Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C语言中的资源中提取并打开PPT#_C#_.net_Resources_Powerpoint - Fatal编程技术网

C# 从C语言中的资源中提取并打开PPT#

C# 从C语言中的资源中提取并打开PPT#,c#,.net,resources,powerpoint,C#,.net,Resources,Powerpoint,我想在PowerPoint viewer中查看演示文稿,ppt文件位于参考资料中。所以问题是我如何访问它并在PowerPoint viewer中查看 下面是示例代码 Process.Start(@"C:\Program Files\Microsoft Office\Office12\PPTVIEW.exe",**@"e:\presentation.ppt")**; 如何用包含在参考资料中的ppt替换此路径?实际上,您需要的是一种常见的模式,这里有一些相关的问题和答案 基本上,您通常会执行以下操

我想在PowerPoint viewer中查看演示文稿,ppt文件位于参考资料中。所以问题是我如何访问它并在PowerPoint viewer中查看

下面是示例代码

Process.Start(@"C:\Program Files\Microsoft Office\Office12\PPTVIEW.exe",**@"e:\presentation.ppt")**;

如何用包含在参考资料中的ppt替换此路径?

实际上,您需要的是一种常见的模式,这里有一些相关的问题和答案

基本上,您通常会执行以下操作:

  • 找到有问题的资源并向其打开资源流
  • 如果目标API无法直接处理流或字节数组,请将流保存到(临时)文件中
  • 对文件或直接对流/字节数组执行任何操作(如我所说,如果支持)
  • 最终从步骤1中删除临时文件(如果有)
  • 因此,首先提取PPT文件(实际上,它是否是PPT文件并不重要,可以通过任何文件或字节blob来提取)

    然后你就用这个打开它。您不需要指定Powerpoint可执行文件的路径,因为PPT应该是Powerpoint或Powerpoint Viewer中注册的文件扩展名。如果两者都已安装,您可能仍希望提供相关可执行文件的路径,以防止启动错误的应用程序。但是,请确保不要硬编码路径,而是尝试从注册表中检索它(或者类似的,我没有检查,因为这现在变得太具体了)


    注意:我遗漏了一些您可能希望在实际应用程序中添加的错误处理。

    实际上,您需要的是一个通用模式,这里有一些相关的问题和答案

    基本上,您通常会执行以下操作:

  • 找到有问题的资源并向其打开资源流
  • 如果目标API无法直接处理流或字节数组,请将流保存到(临时)文件中
  • 对文件或直接对流/字节数组执行任何操作(如我所说,如果支持)
  • 最终从步骤1中删除临时文件(如果有)
  • 因此,首先提取PPT文件(实际上,它是否是PPT文件并不重要,可以通过任何文件或字节blob来提取)

    然后你就用这个打开它。您不需要指定Powerpoint可执行文件的路径,因为PPT应该是Powerpoint或Powerpoint Viewer中注册的文件扩展名。如果两者都已安装,您可能仍希望提供相关可执行文件的路径,以防止启动错误的应用程序。但是,请确保不要硬编码路径,而是尝试从注册表中检索它(或者类似的,我没有检查,因为这现在变得太具体了)


    注意:我遗漏了一些您可能希望添加到实际应用程序中的错误处理。

    您可以将资源提取到临时文件并使用PPT查看器打开它。您可以将资源提取到临时文件并使用PPT查看器打开它
    string tempFile = Path.GetTempFileName();
    
    using (Stream input = assembly.GetManifestResourceStream("MyPresentation.PPT"))
    using (Stream output = File.Create(tempFile))
    {
       input.CopyTo(output); // Stream.CopyTo() is new in .NET 4.0, used for simplicity and illustration purposes.
    }
    
    using (var process = Process.Start(tempFile))
    {
       process.WaitForExit();
       // remove temporary file after use
       File.Delete(tempFile);
    }