2008-08-01 6 views
30

Làm cách nào để tạo liên kết như vậy mailto: sẽ được đăng ký với chương trình của tôi?Đăng ký chương trình Windows với giao thức mailto theo lập trình

Làm cách nào để xử lý sự kiện đó trong chương trình của tôi?

Hầu hết các giải pháp tôi tìm thấy từ tìm kiếm nhanh của Google là cách thực hiện thủ công, nhưng tôi cần tự động thực hiện việc này cho người dùng chương trình của tôi nếu họ nhấp vào nút, chẳng hạn như "đặt làm ứng dụng email mặc định".

Chỉnh sửa: Đã xóa tham chiếu đến Delphi, vì câu trả lời độc lập với ngôn ngữ của bạn.

Trả lời

18

@ Dillie-O: Câu trả lời của bạn đưa tôi đi đúng hướng (Lẽ ra tôi nên mong đợi nó chỉ là một thay đổi registry) và tôi đã làm việc này. Nhưng tôi sẽ đánh dấu đây là câu trả lời bởi vì tôi sẽ đưa thêm một số thông tin mà tôi tìm thấy trong khi làm việc về điều này.

Giải pháp cho câu hỏi này thực sự không quan trọng bạn đang sử dụng ngôn ngữ lập trình nào, miễn là có cách nào đó để sửa đổi cài đặt đăng ký Windows.

Cuối cùng, đây là câu trả lời:

  • Để liên kết một chương trình với giao thức mailto cho tất cả người dùng trên một máy tính, thay đổi HKEY_CLASSES_ROOT \ mailto \ shell \ \ lệnh Giá trị mặc định mở cửa cho:
    "của chương trình của bạn thực thi" "% 1"
  • để associate a program with the mailto protocol for the current user, thay đổi lớp HKEY_CURRENT_USER \ Software \ \ mailto \ shell \ \ lệnh giá trị mặc định mở cửa cho:
    "Chương trình của bạn có thể thực thi ""% 1 "

% 1 sẽ được thay thế bằng toàn bộ URL của thư.Ví dụ, với các liên kết:

<a href="mailto:[email protected]">Email me</a> 

Sau đây sẽ được thực hiện:
"của chương trình của bạn thực thi" "mailto: [email protected]"

Cập nhật (thông qua bình luận bằng shellscape):
Kể từ Windows 8, phương pháp này không còn hoạt động như mong đợi. Win8 thực thi khóa sau: HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associati‌ ons \ URLAssociations \ ‌ MAILTO \ UserChoice mà ProgID của ứng dụng đã chọn được băm và không thể giả mạo được. Đó là một hoàng gia PITA

+0

Bạn đã kiểm tra xem liệu bây giờ bạn có thể đánh dấu câu trả lời này là * câu trả lời * không? Tôi không biết danh tiếng tối thiểu cần thiết. – tzot

+0

Có, giờ đây tôi có thể đánh dấu câu trả lời này là câu trả lời. –

+1

Kể từ Windows 8, phương pháp này không còn hoạt động như mong đợi. Win8 thực thi khóa sau: HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associations \ URLAssociations \ MAILTO \ UserChoice mà ProgID của ứng dụng đã chọn được băm và không thể giả mạo được. Đó là một PITA hoàng gia – shellscape

12

Từ những gì tôi đã thấy, có một vài khóa đăng ký đặt ứng dụng thư mặc định. Một trong số đó là:

System Key: [HKEY_CLASSES_ROOT\mailto\shell\open\command]

Value Name: (Default)

Data Type: REG_SZ (String Value)

Value Data: Mail program command-line.

Tôi không nổi bật với Delphi 7, nhưng tôi chắc chắn có một số thư viện chỉnh sửa đăng ký trong đó bạn có thể sử dụng để sửa đổi giá trị này.

Một số địa điểm liệt kê nhiều hơn phím này, những người khác chỉ là khóa này, vì vậy bạn có thể cần phải kiểm tra một chút để tìm (các) từ khóa phù hợp.

4

Đây là Giải pháp Microsoft chính thức để thay đổi chương trình ứng dụng thư mặc định. Đó là Visual Basic, nhưng tôi hy vọng khái niệm này là rõ ràng từ này:

http://support.microsoft.com/kb/299853

+0

Từ liên kết của bạn: "Điều này tách biệt với trình duyệt Web mặc định hoặc ứng dụng email được sử dụng để bắt đầu URL tùy ý từ bất kỳ đâu trong hệ thống". Đó cũng là một điều tôi đã tự hỏi, nhưng không thực sự là câu trả lời cho câu hỏi này. –