본문

마우스 오른쪽 메뉴 관리 프로그램 : Default Programs Editor

[그림 1] 오른쪽 마우스 버튼을 눌렀을 때 나오는 메뉴(context menu)

윈도우에서 파일이나 폴더를 선택한 후 마우스 오른쪽 버튼을 누르게 되면 메뉴(Context Menu, 한글로 뭐라고 적어야 할지 모른다)가 뜬다. 언젠가부터 블로그에 파일을 올릴때 이미지 사이즈를 축소하고, 파일명에 suffix를 붙이고 파일 확장자를 png로 해서 올리게 되었는데, 이를 어떻게 하면 간단하게 할 수 있을까 생각하다가 이번에 이를 직접 고안하기로 하였다. 위 사진을 보면 열기, 바탕 화면 배경으로 설정, 편집, 인쇄 메뉴가 있는데, 이 메뉴는 다른 파일에서의 context menu에서는 존재하지 않는 메뉴이다.

이 각각의 항목들은 파일 타입에 따라서 레지스트리에 저장이 되는데, 이러한 항목은 nirsoft에서 제작한 ShellMenuView라는 프로그램을 통해서 확인할 수 있다. 하지만 이 프로그램의 단점이라면 프로그램명 그대로 보기만 지원한다는것. 물론 항목 비활성화를 통하여 메뉴 삭제는 가능하지만 '추가'기능은 지원하지 않는다. 직접 레지스트리를 수정해야 하나.. 하고 검색도중에 발견한 Default Programs Editor. 무료에 무설치로 사용가능하다. 아래의 설명대로 위 메뉴에서 이미지 변환 메뉴를 추가하여 이미지를 마우스 클릭만으로 간단하게 변환이 가능하다. 이 작업 뿐만 아니라 특정 확장자의 파일 아이콘 변경, 파일의 설명 변경 및 파일 정보 삭제, ~으로 열기 메뉴 편집, 미디어 삽입시 기본 행동, 프로그램과 확장자의 연결 등 다양한 활동을 쉽게 변경할 수 있다. 



[그림 2, 3, 4] 프로그램 실행 후 순서대로 진행한다. 텍스트 파일에 대해 편집하고자 한다면 [그림 4]에서 txt를 입력한다.



[그림 5, 6, 7] 프로그램 명령 목록을 확인, 입력, 추가를 진행한다.

[그림 5]에서 현재 확장자와 연결된 명령들을 볼 수 있다. 항목을 추가하고자 하므로 Add... 버튼을 누르고 나오는 [그림 6]에서 항목을 알맞게 입력한다. convert.exe는 ImageMagick 패키지의 일부로서 Windows Binary 페이지에서 Portable Win32 static 버전(ImageMagick-6.7.4-Q16-windows.zip)을 다운받으면 압축파일 내에 존재한다 이를 적당한 위치에 위치시킨 후 아래의 명령을 입력한다. 

"C:\Program Files\convert.exe" "%1" -set filename:f "%%t_frontjang" -scale 800x600^> -auto-level "%%[filename:f].png" 

윈도우 환경에서는 %나 >와 같은 글자가 특수한 동작을 하므로 위와같이 두번쓰거나 ^로 escape 시켜줌으로서 사용이 가능하다. (Escape(^) 사용관련, 스위치(%) 사용관련, resize(scale) 옵션 사용관련Convert.exe 사용관련, 윈도우 환경 사용관련) ImageMagick에 대해서는 다음 포스팅에서 정리해서 다룰 예정이다.

아무튼 입력 작업을 마치면 [그림 7]과 같은 화면이 뜨게 되고, 하단의 왼쪽 버튼(Save Context Menu) 를 그냥 누르면 입력 확인 메시지가 뜨고 다른 옵션을 보고자 한다면 [그림 7]처럼 오른쪽의 ▼ 버튼을 눌러서 reg 파일로 저장할 수 있다. reg 파일로 저장한다면 다른사람들도 reg 파일만을 통하여 손쉽게 Context Menu를 변경할 수 있다.

혹시 명령줄에 입력한 명령이 올바른지 아닌지 확인하고 싶을 경우를 위하여 아래에 명령줄 체크 프로그램을 올려놓는다. 화면에 어떤 값이 입력되었는지 쉽게 알 수 있는 매우 간단한 프로그램이다. 사용 팁이라면 사용하고자 하는 프로그램과 이 프로그램을 바꿔치기해서 명령인자를 확인해 보고 그다음 다시 원상 복귀하여 안전하게 사용할 수있다. 아래에 프로그램 소스도 올려놓는다(컴파일러 옵션을 지정하지 않아 상대적으로 실행 프로그램 사이즈가 크다)



[그림 8] 프로그램 인자를 확인하는 프로그램.

#include <iostream>

main(int argc, char* argv[]){
    for(int i=0; i<argc; ++i){
            std::cout << argv[i] << " ";
    }
    getchar();
}

댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.