2010-03-12 17 views
7

Tôi có một ứng dụng .NET chạy trên các cửa sổ. Tôi muốn nhấp vào một số yếu tố trang (nút liên kết ứng dụng flash vv) để khởi động ứng dụng của tôi với một số thông số đặc biệt. (Nó sẽ chạy không chỉ trong IE nhưng trên trình duyệt web dựa trên WebKit quá) Trong khi cài đặt ứng dụng, chúng tôi cho rằng người dùng đó là Quản trị viên và đang chạy Vista hoặc Windows 7 trở lên.Cách đặt WebKit hoặc IE gọi ứng dụng của bạn (.NET) từ trang HTML được mở trong trình duyệt?

Vì vậy, câu hỏi của tôi là - Nơi lấy ví dụ về tương tác như vậy (VỚI nguồn của khóa học)?

Vậy làm thế nào để trình duyệt WebKit hoặc trình duyệt IE gọi ứng dụng .NET của bạn?

Trả lời

11

Register a custom URL Protocol Handler. Sau đó, bạn có thể chỉ định url sử dụng liên kết, vv:

<a href="myapp://doSomething/>Click to run my app!</a> 


Tôi có thể khẳng định rằng đây làm việc trong tất cả các phiên bản của Internet Explorer. Tôi cũng đã thử nghiệm nó trong các phiên bản mới nhất của Firefox (3.6) và Chrome (phiên bản của tôi đã thoát khỏi tôi). Chrome sẽ không cho phép bạn nhập giao thức tùy chỉnh vào thanh địa chỉ, nhưng nó sẽ khởi chạy ứng dụng từ các liên kết sử dụng giao thức tùy chỉnh.

Nếu bạn đã cài đặt Adobe Reader, giao thức acrobat:// đã được đăng ký. Thật không may, SO không cho phép các liên kết sử dụng giao thức tùy chỉnh, vì vậy tôi không thể thêm một ví dụ ở đây tôi sợ.

+0

Liên kết của bạn có hoạt động cho cả IE và WebKit không? –

+0

@AndyE: BTW, trớ trêu thay, liên kết ở trên không hiển thị trong FF 3.5! Nó hoạt động trong IE 8. –

+0

@John Saunders: thật kỳ lạ. Tôi nhớ một bài báo chi tiết về một khai thác bảo mật (hiện đang cố định) dựa trên cách Safari (WebKit) xử lý các giao thức url tùy chỉnh nhưng tôi dường như không thể tìm thấy nó ngay bây giờ. –

0

Khi ứng dụng được chạy và trình duyệt đều chạy trên Windows, registered protocol handler là cách tốt nhất để truy cập, giả sử tất cả các trình duyệt thú vị đều hỗ trợ nó. Xem xét rằng liên kết ở trên là từ tài liệu MSDN trên Internet Explorer Development, tôi có thể tưởng tượng rằng một số trình duyệt có thể không muốn hỗ trợ cơ chế này.

+0

để tải Steam hoặc iTunes từ URL như thế nào? –

+0

@Alastair: theo http: // stackoverflow.com/questions/2429770/how-to-make-webkit-hoặc-ie-call-your-application-net-từ-html-page-mở-in-br/2429792 # 2429792, chúng đăng ký trình xử lý giao thức. Tôi chỉ đề xuất đăng ký là ứng dụng khởi chạy cho phần mở rộng tệp, mà tôi tin rằng sẽ nhẹ hơn. –

+0

Nhưng ít trực quan hơn. Người dùng vẫn phải chạy tệp để khởi chạy chương trình của bạn. –

0

Tôi muốn đề xuất rằng cách duy nhất để làm điều này là bằng cách làm tròn cho máy chủ. Trang web kích hoạt nội dung nào đó trên máy chủ. Ứng dụng cũng được kết nối với máy chủ. Tôi nghĩ có lẽ nó không hợp lý để làm theo cách khác. Nếu bạn muốn nhận được thực sự bẩn, nó có thể sử dụng LocalConnection của Flash (trong đó sử dụng một tập tin ánh xạ bộ nhớ để giao tiếp) để trò chuyện với một ứng dụng .net. Darron Schall đã quản lý nó (nhưng không chia sẻ).

Nếu yêu cầu ứng dụng, tại sao phải bận tâm với một trang web?

3

Bạn không thể có trình duyệt dựa trên Webkit để mở ứng dụng trực tiếp. Hy vọng tốt nhất của bạn (và những gì Apple làm để mở iTunes Store) sẽ có đăng ký ứng dụng .NET của bạn để mở một số loại URL nhất định, sử dụng liên kết trỏ đến một URL thuộc loại này.

Ví dụ, nếu ứng dụng của bạn có thể mở myapp:// URL, bạn có thể sử dụng các tiêu đề HTTP sau:

Location: myapp://mysettings 

hoặc một liên kết thường hơn:

<a href="myapp://mysettings">Foo</a> 

Và sau đó trình duyệt sẽ chăm sóc để mở một ứng dụng có thể xử lý sơ đồ URL myapp:// (trong trường hợp này là ứng dụng của bạn).

0

Bạn có thể đăng ký trình xử lý giao thức trỏ đến ứng dụng của bạn, sau đó có liên kết trỏ đến URL có giao thức đó và bất kỳ thông số nào bạn cần.

+0

Tính năng này có hoạt động cho cả IE và WebKit không? –

+0

Nó sẽ hoạt động trên bất kỳ trình duyệt web phù hợp nào. Tôi biết nó hoạt động ít nhất trong IE, Firefox và Chrome. –

+0

@Max: nhưng điều đó sẽ chỉ hoạt động trên Windows, phải không? Và, "phù hợp" với những gì? Khả năng đăng ký một trình xử lý giao thức là đặc trưng cho Windows, phải không? Tất cả các trình duyệt có hỗ trợ các lược đồ URL tùy ý thông qua trình xử lý giao thức đã đăng ký không? –

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