2009-03-03 35 views
6

Tôi đang tạo một ứng dụng sử dụng định dạng tệp nhất định làm nguồn dữ liệu của nó. Tôi muốn ứng dụng này mở bất cứ khi nào người dùng nhấp đúp vào tệp này, như cách MS Word sẽ mở khi người dùng nhấp đúp vào tài liệu Word. Làm cách nào để tôi thực hiện việc này? Ngoài ra, làm cách nào để điền vào các trường dữ liệu bằng cách sử dụng tệp mà người dùng đã chọn. Tôi có sử dụng args [] từ lớp program.cs không? Tôi đang sử dụng C# để mã ứng dụng này.Làm cách nào để mở ứng dụng khi người dùng nhấp đúp vào tệp được liên kết của ứng dụng?

N.B. Tôi muốn kết hợp này được thực hiện khi ứng dụng được cài đặt trên máy chủ mà không cần người dùng làm bất cứ điều gì.

Trả lời

0

Tôi đã giải quyết được vấn đề này. Tôi đã sử dụng WIX để tạo một tệp cài đặt và yêu cầu nó liên kết tệp với ứng dụng khi nó cài đặt.

0

Trước tiên, bạn phải liên kết mở rộng loại tệp với tệp thực thi của bạn. Trên Windows, bạn thực hiện điều này thông qua registry (tìm kiếm "filetype association windows"). Trong câu hỏi này, bạn tìm thấy một số gợi ý thú vị: Filetype association with application (C#)Script to associate an extension to a program

Chương trình của bạn phải phản ứng trên các đối số hoặc tham số dòng lệnh. Trong Java, nó thực sự là mảng chuỗi của phương thức chính. Tôi sẽ gess, nó giống nhau trong C#.

1

Xem this. Hoặc this nếu bạn muốn thông tin API.

0

Nếu bạn không cần thực hiện nó theo chương trình chuyên nghiệp, hãy nhấp chuột phải vào biểu tượng, nhấp mở bằng ..., sau đó chọn 'luôn sử dụng chương trình này ...'.

+1

Ông rõ ràng muốn thực hiện việc này theo lập trình. Thẻ là C# và nó nói rằng ông muốn liên kết này được thực hiện với trình cài đặt của mình. – Brad

0

Đây là điều thường được xử lý bởi chương trình thiết lập của bạn .. Tôi đã sử dụng INNO setup ví dụ và dễ dàng sắp xếp để điều chỉnh đăng ký của người dùng khởi chạy ứng dụng của bạn khi tiện ích mở rộng tệp được liên kết được nhấp đúp/mở. Nó thậm chí sẽ chăm sóc các loại MIME cho bạn cũng như thanh toán bù trừ những thứ này khi gỡ cài đặt, đó là một điều rất hay để làm

1

ClickOnce cũng hỗ trợ các liên kết tệp như .NET 3.5 SP1. Trong thuộc tính của dự án, chuyển sang tab Publish và nhấp vào nút Options. Có một phần File Associations trong hộp thoại đó cho phép bạn chỉ định phần mở rộng tệp, mô tả và biểu tượng tùy chỉnh.

8

FIRST, bạn cần thiết lập liên kết tệp để loại tệp của bạn được liên kết với ứng dụng của bạn và mở loại tệp sẽ chạy ứng dụng của bạn.

Bạn có thể làm các hiệp hội tập tin programatically, có một số chi tiết ở đây như đã đề cập: http://www.codeproject.com/KB/dotnet/System_File_Association.aspx

Bạn cũng có thể làm điều đó thông qua dự án cài đặt cho bạn ứng dụng nếu bạn có một. Đây là đường dẫn dễ dàng hơn cho "người mới". Thông tin chi tiết về cách sử dụng studio trực quan để có được dự án thiết lập để thêm liên kết tệp và cũng đặt biểu tượng cho tệp đó ở đây: http://www.dreamincode.net/forums/topic/58005-file-associations-in-visual-studio/

Nếu không, nếu bạn sử dụng InnoSetup, Wix, thì tôi cho rằng bạn có thể xem hướng dẫn trình cài đặt để tạo liên kết cho bạn.

SECOND, bạn cần phải có ứng dụng của mình chấp nhận đối số dòng lệnh. (Các) tệp đã mở được (được) chuyển thành (các) đối số dòng lệnh. Bạn cần xử lý các đối số để lấy đường dẫn/tên tệp và mở (các) tệp đã cho.Có một mô tả hay về điều này ở đây với mã: C# Command Line arguments problem in Release build

Trong trường hợp của bạn, thay vì MessageBox.Show(s) trong trình xử lý biểu mẫu, bạn sẽ gọi phương thức phân tích đối số riêng biệt của bạn. Đối với một ứng dụng đơn giản mà chỉ chấp nhận những file tên để mở như các đối số, điều này có thể đơn giản như

foreach (string filePathName in Args) 
       DoNamedFileOpen(filePathName); 

Mã của bạn cũng có thể có một phương pháp mà có thể trích xuất từ ​​tập tin các giá trị cho datafields bạn quan tâm v.v.

Đây là cách tiếp cận đơn giản cho vấn đề có các liên kết tệp được cài đặt trên ứng dụng của bạn, có biểu tượng và ứng dụng của bạn xử lý việc mở các tệp đó.

Tất nhiên, có rất nhiều lựa chọn khác, như hiệp hội tập tin thời gian chạy (yêu cầu người dùng nếu họ muốn hiệp hội), phát hiện các hiệp hội "vỡ", vv

Câu hỏi này được một thời gian dài ở đây nhưng tôi hy vọng điều này hữu ích cho các tìm kiếm mới

Các vấn đề liên quan