我们的客户端(一个winforms应用程序)包含一个文件浏览器。我希望用户能够使用shell的默认处理程序打开选定的文件。我怎么做?我读过我应该使用Win32 API而不是注册表,但我更喜欢只涉及.NET的解决方案。如何使用shell的默认处理程序打开文件?
25
A
回答
54
编辑:较新的,更简单的答案。
你确实可以使用Process.Start(filename)
。通过指定 文件名类似于键入的 Windows开始菜单中的运行对话框中的 信息
启动流程:这是在docs for
Process.Start
规定。因此, 文件名不需要代表 的可执行文件。它可以是任何 文件类型,其扩展名 已与安装在系统上的应用程序 关联。例如 的文件名可以有一个.txt扩展 如果您有相关的文本文件 用编辑器,如记事本, 也可以有一个.doc,如果你有一个词 处理工具 associated.doc文件,如Microsoft Word。同样地,在 运行对话框中可以接受或不 扩展名为.exe的 可执行文件名相同的方式,扩展名为.exe 是在文件名参数可选。 例如,您可以将fileName 参数设置为“Notepad.exe”或 “记事本”。
编辑:原来,复杂的答案:
如果使用Process.Start
与该文件为“可执行文件”,并指定UseShellExecute = true
都可以正常运行。例如:
using System;
using System.Diagnostics;
class Test
{
static void Main()
{
ProcessStartInfo psi = new ProcessStartInfo("test.txt");
psi.UseShellExecute = true;
Process.Start(psi);
}
}
在记事本中打开test.txt。
实际上,UseShellExecute=true
是默认的,但是因为它是绝对需要的,所以我喜欢明确地指定它以使读者更清楚。
6
不知道,如果其确定
System.Diagnostics.Process.Start(filePath);
2
System.Diagnostics.Process提供了围绕shell32.ShellExecute的.net本机包装。
请参阅PInvoke.Net以了解有关这两种API的讨论,以及有关MSDN的MSDN文档。
相关问题
- 1. CreateProcessAsUser:如何使用默认应用程序打开文件?
- 2. 如何打开java上磁贴的默认处理程序
- 3. 程序如何处理“打开...”文件?
- 4. Applescript:如何使用默认程序打开文件?
- 5. 如何用cmd中的默认应用程序打开文件?
- 6. 如何更改用于打开.html文件的默认程序
- 7. 如何用ruby打开默认应用程序文件?
- 8. 使用iOs上的默认应用程序打开文件
- 9. 如何用默认关联程序打开文件
- 10. 如何在默认应用程序中打开文件。 Ruby
- 11. 在Java中使用默认程序打开文件的问题
- 12. 打开一个文件,不使用默认的程序
- 13. 如何打开默认程序中的文件?
- 14. 如何使用SWT中的默认应用程序打开文件?
- 15. 如何在Mozilla打开文件使用系统默认的应用程序
- 16. C#如何使用默认应用程序打开所有的MP3文件
- 17. 如何使用VBScript打开一个默认应用程序的HTML文件?
- 18. 如何在Windows上使用Perl的默认应用程序打开文件?
- 19. 使用其默认程序打开文件
- 20. 使用其默认程序通过python打开文件
- 21. 使用默认程序打开Excel文件
- 22. xmlrpc apache - 如何默认处理程序
- 23. 如何使用kivy打开默认的Android应用程序?
- 24. 如何在其默认程序中打开文件 - Linux
- 25. 如何更改默认程序帽子打开文件
- 26. 如何在其默认程序中打开文件
- 27. 如何检查文件扩展名,并相应地打开与Windows批处理文件中的默认程序
- 28. iOS Obj-C:如何使用其默认应用程序打开本地文件?
- 29. 如何使用批处理文件打开程序时立即关闭程序?
- 30. 获取打开文件的默认应用程序的图标
`的Process.Start( “C:\ TEMP \ test.xlsx”);`打开如果**安装*** Excel中的*** XLSX文件**。如果没有安装,我不知道。 – Kiquenet 2017-02-24 09:59:06