안녕하세요. 김대욱입니다. 이번시간에는 전시간에 이어 MetaWeblogAPI를 사용해서 간단하게 블로그에 포스팅하는 방법에 대해 알아보도록 하겠습니다. 그리고 이전시간에 구현해놓은 내용을 바탕으로 아래그림과 같이 탐색기에서 마우스 오른쪽 버튼을 눌렀을경우 나타나는 컨텍스트 메뉴에 "블로그에 올리기"라는 메뉴를 추가하는 방법을 소개합니다.
Shell Context Menu(탐색기에서 오른쪽 버튼을 눌렀을때 나타나는 컨텍스트 메뉴)라고 불리는 녀석에 자신이 원하는 새로운 메뉴를 추가하고자 하는 COM을 이용을 하거나, 간단히 레지스트리만 변경하여 간단하게 구현 할 수 있습니다. 이번시간에 소개할 내용은 간단한 레지스트리 조작만으로 메뉴를 추가하는 방법에 대해 소개합니다.
ShellContextMenu는 레지스트리의 아래와 같은형식으로 레지스트리를 수정함으로서 추가가 가능합니다.
HKEY_CLASSES_ROOT\[확장자명/혹은 형식]\Shell\[대표이름]\Command
예를들어 모든 확장자에 메뉴를 추가하고자 한다면 아래와 같은 과정을 수행하시면됩니다.
1. HKEY_CLASSES_ROOT\*\Shell 키를 찾아값니다. (만약 Shell Key가 없다면 생성하시면 됩니다.)
2. Shell 키에 추가하고자 하는 메뉴이름을 Key로 등록합니다. (꼭 메뉴이름과 동일할 필요는 없습니다.)
3. 등록한 메뉴이름 키의 Default Value를 메뉴에 표시될 이름으로 설정합니다.
4. 그리고 메뉴이름 키에 Command라는 키를 추가합니다.
5. Command 키에 Default Value를 메뉴를 선택했을 경우 실행할 어플리케이션의 경로를 입력합니다.
저같은 경우 모든 파일에서 오른쪽 버튼을 눌렀을때 네이버 블로그에 사진 올리기라는 메뉴가 나타나도록 하기 위하여 아래와 같이 레지스트리를 수정했습니다.
====================================================================
[HKEY_CLASSES_ROOT\*\shell\UploadBlog]
@="네이버 블로그에 사진올리기"
[HKEY_CLASSES_ROOT\*\shell\UploadBlog\command]
@="C:\\SimpleBlogPosting.exe %1"
====================================================================
SimpleBlogPosting.exe 뒤에 붙어있는 %1은 파라미터를 지정하는 값으로 %1을 붙이면 선택한 파일의 이름이 입력되게 됩니다. 위와 같은 내용을 C#으로 작성하게 되면 아래와 같이 구현하실 수 있습니다. (Registry관련 Class는 Microsoft.Win32에 정의되어 있습니다.)
이번 예제의 경우 아래와 같이 폼의 생성자에서 레지스트리에 작성하는 코드를 추가해서 최초 1회 프로그램이 실행되면 자동으로 Shell ContextMenu에 메뉴가 추가되도록 구현했습니다.
위와 같은 방법을 사용해서 아래 그림과 같은 내용의 프로그램을 구현해 보았습니다.
파일에서 마우스 오른족 버튼을 누르고 네이버 블로그에 사진 올리기를 클릭하게되면 자동으로 블로그에 사진을 올려주는 어플리케이션이 되겠습니다. 이전시간에 말씀드렸다싶이 저희 어머니를 위해 제작된 프로그램이라 아주 단순하면서 기본적인 기능만 수행 가능한 형태로 구현됬습니다만, 응용해서 더 다양한 결과를 만들어 내실 수 있을것이라고 생각됩니다.
이상으로 MetaWeblogAPI + ShellCotextMenu를 이용한 블로그 포스팅내용을 마치도록 하겠습니다.
아래는 이번시간에 사용된 전체소스코드입니다.

SimpleBlogPosting.zip
