Ứng dụng khách của chúng tôi (một ứng dụng winforms) bao gồm một trình duyệt tập tin. Tôi muốn người dùng có thể mở tệp đã chọn bằng trình xử lý mặc định của trình bao. Làm thế nào để làm điều đó? Tôi đã đọc mà tôi nên sử dụng API Win32 hơn là đăng ký, nhưng tôi muốn một giải pháp mà chỉ liên quan đến .NET.Làm cách nào để mở tệp bằng trình xử lý mặc định của trình bao?
Trả lời
EDIT nó: Mới hơn, câu trả lời đơn giản hơn.
Bạn thực sự có thể chỉ sử dụng Process.Start(filename)
. Đây là quy định trong docs for Process.Start
:
Bắt đầu một quá trình bằng cách xác định tên tập tin của nó cũng tương tự như cách gõ thông tin trong hộp thoại Run của menu Start của Windows. Do đó, tên tệp không cần phải đại diện cho tệp thi hành. Nó có thể là bất kỳ loại tệp nào mà tiện ích mở rộng có được liên kết với ứng dụng được cài đặt trên hệ thống. Ví dụ: tên tệp có thể có đuôi .txt nếu bạn có văn bản liên kết tệp với trình chỉnh sửa, chẳng hạn như Notepad, hoặc có thể có .doc nếu bạn có tệp.doc được liên kết với từ công cụ xử lý , chẳng hạn như Microsoft Word. Tương tự, trong cùng một cách mà hộp thoại Chạy có thể chấp nhận tên tệp thực thi có hoặc không có phần mở rộng .exe, phần mở rộng .exe là tùy chọn trong thông số tên tệp. Ví dụ: Ví dụ, bạn có thể đặt tham số fileName thành "Notepad.exe" hoặc "Notepad".
EDIT: Original, câu trả lời phức tạp:
Nếu bạn sử dụng Process.Start
với các tập tin như là "thực thi" và chỉ định UseShellExecute = true
nó sẽ chỉ làm việc. Ví dụ:
using System;
using System.Diagnostics;
class Test
{
static void Main()
{
ProcessStartInfo psi = new ProcessStartInfo("test.txt");
psi.UseShellExecute = true;
Process.Start(psi);
}
}
Điều đó mở test.txt trong Notepad.
Thực tế, UseShellExecute=true
là mặc định, nhưng vì nó chắc chắn là bắt buộc, tôi muốn chỉ định rõ ràng để làm rõ hơn cho người đọc.
không chắc chắn nếu ok
System.Diagnostics.Process.Start(filePath);
System.Diagnostics.Process cung cấp trình bao bọc gốc Net. Xung quanh shell32.ShellExecute.
Xem PInvoke.Net để thảo luận về cả API và tài liệu MSDN trên MSDN.
- 1. Làm cách nào để tìm tệp xử lý quá trình của tôi đã mở trong Linux?
- 2. Làm cách nào để mở rộng các biến trong trình xử lý readpipe của Perl?
- 3. Làm cách nào để mở trình chọn tệp bằng JavaScript?
- 4. Làm cách nào để mở các tệp PDF theo trình đọc PDF mặc định?
- 5. Làm thế nào để tìm ra trình mở tập tin mặc định bằng Java?
- 6. Cách lấy tham chiếu đến trình xử lý trang ASP.NET mặc định hoặc trình xử lý dịch vụ web?
- 7. Emacs ... là trình bao mặc định của bạn?
- 8. Mở trang html trong trình duyệt mặc định bằng VBA?
- 9. Bản tóm tắt: Cách mở tệp bằng chương trình mặc định?
- 10. Làm cách nào để xác định tiến trình của tệp?
- 11. Python: xử lý mặc định của SIGTERM là gì?
- 12. Mở một file html bằng trình duyệt web mặc định
- 13. Giết chương trình bằng cách sử dụng đa xử lý
- 14. Làm thế nào để mở trình duyệt mặc định của iPhone?
- 15. Làm cách nào để cho phép chương trình của tôi mở tệp khi "Mở bằng" được sử dụng?
- 16. Làm cách nào để có danh sách các xử lý tệp đang mở theo quy trình trong C#?
- 17. Làm cách nào để xử lý ActivityNotFoundException?
- 18. Thiết lập trình xử lý tùy chọn mặc định cho OptionParser của ruby
- 19. Xử lý một phần tệp bằng bộ tiền xử lý
- 20. Trình xem web trên Android, trình xử lý tệp đầu vào của tệp không hiển thị
- 21. Tìm kiếm quản trị Django: cách ghi đè trình xử lý mặc định?
- 22. Trình xử lý PDF: tên tệp nội dung bố trí
- 23. Làm cách nào để xử lý tệp bộ nhớ cache?
- 24. Làm cách nào để chỉ định trẻ em trong trình xử lý sự kiện Backbone.js?
- 25. Cách mở tệp bằng ứng dụng mặc định trong SWT?
- 26. Mở trình soạn thảo văn bản mặc định trong bash?
- 27. Quy trình xử lý được xác định như thế nào?
- 28. xem trình xử lý tệp đang mở cho quá trình trên cửa sổ
- 29. Cách đặt Notepad ++ làm trình chỉnh sửa mặc định TortoiseSVN?
- 30. Làm cách nào để mở tệp resx trong trình soạn thảo Visual Studio XML theo mặc định?
'Process.Start (" C: \ temp \ test.xlsx ");' mở tệp *** xlsx *** nếu ** Excel được cài đặt **. Nếu không được cài đặt, tôi không biết. – Kiquenet