我們的客戶端(一個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. 如何用cmd中的默認應用程序打開文件?
- 5. 如何更改用於打開.html文件的默認程序
- 6. 如何用ruby打開默認應用程序文件?
- 7. 使用iOs上的默認應用程序打開文件
- 8. 如何在默認應用程序中打開文件。 Ruby
- 9. 如何用默認關聯程序打開文件
- 10. 在Java中使用默認程序打開文件的問題
- 11. 使用node-webkit中的默認程序打開一個文件
- 12. 打開一個文件,不使用默認的程序
- 13. 如何打開默認程序中的文件?
- 14. 如何從事件處理程序中調用默認處理程序
- 15. 如何在Windows上使用Perl的默認應用程序打開文件?
- 16. 如何使用VBScript打開一個默認應用程序的HTML文件?
- 17. 如何使用SWT中的默認應用程序打開文件?
- 18. 如何在Mozilla打開文件使用系統默認的應用程序
- 19. C#如何使用默認應用程序打開所有的MP3文件
- 20. 如何替換默認處理程序
- 21. xmlrpc apache - 如何默認處理程序
- 22. 使用默認程序打開Excel文件
- 23. 使用其默認程序打開文件
- 24. 使用默認程序打開txt文件
- 25. 使用其默認程序通過python打開文件
- 26. 如何使用kivy打開默認的Android應用程序?
- 27. 如何在其默認程序中打開文件
- 28. 如何更改默認程序帽子打開文件
- 29. 如何在其默認程序中打開文件 - Linux
- 30. 如何檢查文件擴展名,並相應地打開與Windows批處理文件中的默認程序
`的Process.Start( 「C:\ TEMP \ test.xlsx」);`打開如果**安裝*** Excel中的*** XLSX文件**。如果沒有安裝,我不知道。 – Kiquenet 2017-02-24 09:59:06