프로그래밍 방식으로 메일투 프로토콜에 Windows 프로그램 등록하기

메일주소:` 링크가 내 프로그램에 등록되도록 하려면 어떻게 해야 하나요?

그러면 프로그램에서 해당 이벤트를 어떻게 처리하나요?

Google 검색을 통해 찾은 대부분의 솔루션은 이 작업을 수동으로 수행하는 방법이지만 내 프로그램 사용자가 '기본 이메일 클라이언트로 설정'과 같은 버튼을 클릭하면 자동으로 이 작업을 수행해야 합니다.

편집:

답변이 사용자의 언어와 무관하므로 델파이에 대한 참조를 삭제했습니다.

해결책

*@Dillie-O: 귀하의 답변 덕분에 올바른 방향으로 나아갈 수 있었고(레지스트리만 변경하는 것으로 예상했어야 했는데) 이 문제를 해결했습니다. 하지만 이 작업을 하면서 찾은 몇 가지 추가 정보를 넣을 예정이므로 이것을 답변으로 표시하겠습니다.

이 질문에 대한 해결책은 Windows 레지스트리 설정을 수정할 수 있는 방법만 있다면 어떤 프로그래밍 언어를 사용하든 상관없습니다.

마지막으로 여기에 답이 있다:

  • 컴퓨터의 모든 사용자에 대해 프로그램을 메일투 프로토콜과 연결하려면 HKEY_CLASSES_ROOT\mailto\shell\open\command 기본값을 다음과 같이 변경하세요:
    "프로그램의 실행 파일" & "%1&"로 변경합니다;
  • 프로그램을 현재 사용자의 메일토 프로토콜에 연결하려면](http://windowsxp.mvps.org/permail.htm), HKEY_CURRENT_USER\Software\Classes\mailto\shell\open\command 기본값을 다음과 같이 변경합니다:
    "프로그램의 실행 파일" & "%1&"로 변경합니다;

1은 전체 메일 주소 URL로 대체됩니다. 예를 들어, 링크가 주어집니다:

<a href="mailto:user@example.com">Email me</a>

다음이 실행됩니다: 프로그램의 실행 파일 &" mailto:user@example.com"

업데이트 (쉘스케이프의 코멘트를 통해):
Windows 8부터는 이 방법이 더 이상 예상대로 작동하지 않습니다. Win8은 선택한 앱의 ProgID가 해시되어 위조할 수 없는 HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\MAILTO\UserChoice 키를 강제 적용합니다. 매우 까다로운 작업입니다.

해설 (3)

내가 본 바로는 기본 메일 클라이언트를 설정하는 몇 가지 레지스트리 키가 있다. 그중 하나가

시스템 키: [HKEY_CLASSES_ROOT\mailto\shell\open\command]

값 이름: (기본값)

데이터 유형: REG_SZ (문자열 값)

값 데이터: 메일 프로그램 명령줄.

저는 델파이 7에 익숙하지 않지만, 이 값을 수정하는 데 사용할 수 있는 레지스트리 편집 라이브러리가 있을 것입니다.

어떤 곳은 이 보다 더 많은 것을 나열하고 다른 곳은 이 키만 나열하므로 적절한 것을 찾으려면 약간의 테스트가 필요할 수 있습니다.

해설 (0)

다음은 기본 메일 클라이언트를 프로그래밍 방식으로 변경하는 공식 Microsoft 솔루션입니다. 비주얼 베이직이지만 이걸로 개념이 명확해지길 바랍니다:

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

해설 (1)