바로 가기 메뉴 확장
일반적으로 개체를 마우스 오른쪽 단추로 클릭하면 바로 가기 메뉴가 표시됩니다. 이 메뉴에는 사용자가 개체에서 다양한 작업을 수행하기 위해 선택할 수 있는 명령 목록이 포함되어 있습니다. 이 섹션에서는 파일 시스템 개체의 바로 가기 메뉴를 소개합니다.
- 파일 시스템 개체의 바로 가기 메뉴
- 바로 가기 메뉴 동사
- 파일 형식의 바로 가기 메뉴 확장
- 미리 정의된 셸 개체에 대한 바로 가기 메뉴 확장
- 임의 파일 형식을 처리하는 애플리케이션 등록
- 새 하위 메뉴 확장
추가 정보는 여기에서 확인할 수 있습니다.
파일 시스템 개체의 바로 가기 메뉴
사용자가 Windows 탐색기 또는 바탕 화면에 표시되는 파일과 같은 개체를 마우스 오른쪽 단추로 클릭하면 명령 목록이 포함된 바로 가기 메뉴가 나타납니다. 그런 다음 사용자는 적절한 명령을 선택하여 파일 열기 또는 삭제와 같은 작업을 수행할 수 있습니다.
바로 가기 메뉴는 파일 관리에 자주 사용되므로 셸은 모든 파일의 바로 가기 메뉴에 표시되는 잘라내기 및 복사와 같은 기본 명령 집합을 제공합니다. Open With는 기본 명령이지만 .wav와 같은 일부 표준 파일 형식에는 표시되지 않습니다. 아이콘 사용자 지정의 예로도 사용된 샘플 내 문서 디렉터리의 다음 그림은 MyDocs4.xyz 마우스 오른쪽 단추로 클릭하여 표시된 기본 바로 가기 메뉴를 보여 줍니다.
MyDocs4.xyz 기본 바로 가기 메뉴를 표시하는 이유는 등록된 파일 형식의 멤버가 아니기 때문입니다. 반면에 .txt는 등록된 파일 형식입니다. .txt 파일 중 하나를 마우스 오른쪽 단추로 클릭하면 위쪽 섹션 에 두 개의 추가 명령인 열기 및 인쇄가 포함된 바로 가기 메뉴가 표시됩니다.
파일 형식이 등록되면 추가 명령을 사용하여 바로 가기 메뉴를 확장할 수 있습니다. 해당 형식의 파일을 마우스 오른쪽 단추로 클릭하면 기본 명령 위에 표시됩니다. 이러한 방식으로 추가된 대부분의 명령은 인쇄 또는 열기와 같은 일반적인 명령이지만 사용자가 유용할 수 있는 명령을 자유롭게 추가할 수 있습니다.
파일 형식의 바로 가기 메뉴를 확장하는 데 필요한 것은 각 명령에 대한 레지스트리 항목을 만드는 것입니다. 보다 정교한 방법은 파일별로 파일 형식에 대한 바로 가기 메뉴를 확장할 수 있는 바로 가기 메뉴 처리기를 구현하는 것입니다. 자세한 내용은 상황에 맞는 메뉴 처리기 만들기를 참조 하세요.
바로 가기 메뉴 동사
바로 가기 메뉴의 각 명령은 레지스트리에서 동사로 식별됩니다. 이러한 동사는 프로그래밍 방식으로 애플리케이션을 시작할 때 ShellExecuteEx 에서 사용하는 동사와 동일합니다. ShellExecuteEx 사용에 대한 자세한 내용은 애플리케이션 시작에 대한 설명을 참조하세요.
동사는 셸에서 연결된 명령을 식별하는 데 사용하는 간단한 텍스트 문자열입니다. 각 동사는 콘솔 창 또는 일괄 처리(.bat) 파일에서 명령을 시작하는 데 사용되는 명령 문자열에 해당합니다. 예를 들어 열려 있는 동사는 일반적으로 파일을 여는 프로그램을 시작합니다. 해당 명령 문자열은 일반적으로 다음과 같습니다.
"My Program.exe" "%1"
"%1"은 파일 이름과 함께 제공되는 명령줄 매개 변수의 표준 자리 표시자입니다. 예를 들어 탭 보기에 표시할 특정 페이지를 지정할 수 있습니다.
참고 항목
명령 문자열의 요소가 공백을 포함하거나 포함할 수 있는 경우 따옴표로 묶어야 합니다. 그렇지 않으면 요소에 공백이 있으면 올바르게 구문 분석되지 않습니다. 예를 들어 "My Program.exe"는 애플리케이션을 제대로 시작합니다. My Program.exe를 사용하는 경우 시스템은 첫 번째 명령줄 인수로 "Program.exe"와 함께 "My"를 시작하려고 시도합니다. 문자열에 공백이 포함되지 않도록 확신할 수 없으므로 항상 셸에서 문자열로 확장되는 "%1"과 같은 인수와 함께 따옴표를 사용해야 합니다.
동사에는 동사 문자열 자체가 아니라 바로 가기 메뉴에 표시되는 표시 문자열이 연결될 수도 있습니다. 예를 들어 openas의 표시 문자열은 Open With입니다. 일반 메뉴 문자열과 마찬가지로 표시 문자열에 앰퍼샌드(>)를 포함하여 명령을 키보드로 선택할 수 있습니다.
정식 동사
일반적으로 애플리케이션은 정의한 동사에 대해 지역화된 표시 문자열을 제공합니다. 그러나 언어 독립도를 제공하기 위해 시스템은 정식 동사라고 하는 일반적으로 사용되는 표준 동사 집합을 정의합니다. 정식 동사는 모든 언어와 함께 사용할 수 있으며 시스템은 적절하게 지역화된 표시 문자열을 자동으로 생성합니다. 예를 들어 열려 있는 동사의 표시 문자열은 영어 시스템에서 열기로 설정되고 독일어 시스템에서는 Öffnen으로 설정됩니다.
정식 동사는 다음과 같습니다.
값 | 설명 |
---|---|
열기 | 파일 또는 폴더를 엽니다. |
Opennew | 새 창에서 파일 또는 폴더를 엽니다. |
파일을 인쇄합니다. | |
탐험 | 폴더가 선택된 Windows 탐색기를 엽니다. |
find | 폴더가 기본 검색 위치로 설정된 Windows 검색 대화 상자를 엽니다. |
openas | [연결] 대화 상자를 엽니다. |
속성 | 개체의 속성 시트를 엽니다. |
printto 동사도 정식이지만 표시되지 않습니다. 사용자가 파일을 프린터 개체로 끌어서 인쇄할 수 있습니다.
확장 동사
사용자가 개체를 마우스 오른쪽 단추로 클릭하면 바로 가기 메뉴에 모든 일반 동사가 포함됩니다. 그러나 지원하지만 모든 바로 가기 메뉴에 표시되지 않은 명령이 있을 수 있습니다. 예를 들어 일반적으로 사용되지 않거나 숙련된 사용자를 위한 명령이 있을 수 있습니다. 이러한 이유로 하나 이상의 확장 동사를 정의할 수도 있습니다. 이러한 동사는 문자열이기도 하며 일반 동사와 유사합니다. 이러한 동사는 등록된 방식으로 일반 동사와 구별됩니다. 확장 동사와 연결된 명령에 액세스하려면 Shift 키를 누르는 동안 개체를 마우스 오른쪽 단추로 클릭해야 합니다. 그런 다음 확장된 동사가 일반 동사와 함께 표시됩니다.
파일 형식의 바로 가기 메뉴 확장
파일 형식의 바로 가기 메뉴를 확장하는 가장 간단한 방법은 레지스트리를 사용하는 것입니다. 이렇게 하려면 파일 형식과 연결된 애플리케이션의 ProgID 키 아래에 셸 하위 키를 추가합니다. 필요에 따라 셸 하위 키의 기본값으로 만들어 파일 형식에 대한 기본 동사를 정의할 수 있습니다.
기본 동사는 바로 가기 메뉴에 먼저 표시됩니다. 그 목적은 ShellExecuteEx가 호출되지만 동사가 지정되지 않은 경우 사용할 수 있는 동사를 셸에 제공하는 것입니다. ShellExecuteEx가 이 방식으로 사용되는 경우 셸이 반드시 기본 동사를 선택하지는 않습니다. Windows 2000 이상 시스템에서 찾을 수 있는 셸 버전 5.0 이상의 경우 셸은 다음 목록에서 사용 가능한 첫 번째 동사를 사용합니다. 사용할 수 없는 경우 작업이 실패합니다.
- 열린 동사
- 기본 동사
- 레지스트리의 첫 번째 동사
- openwith 동사
버전 5.0 이전의 셸 버전에서는 세 번째 항목을 생략합니다.
셸 하위 키 아래에 추가하려는 각 동사에 대해 하나의 하위 키를 만듭니다. 이러한 각 하위 키에는 동사의 표시 문자열로 설정된 REG_SZ 값이 있습니다. 시스템에서 제대로 지역화된 문자열을 자동으로 표시하므로 정식 동사에 대한 표시 문자열을 생략할 수 있습니다. 비사용 동사에 대한 표시 문자열을 생략하면 동사 문자열이 표시됩니다. 각 동사 하위 키에 대해 기본값이 명령 문자열로 설정된 명령 하위 키를 만듭니다.
다음 그림에서는 파일 형식 및 사용자 지정 아이콘에 사용되는 .myp 파일 형식의 바로 가기 메뉴를 보여 줍니다. 이제 바로 가기 메뉴에 doit를 기본 동사로 사용하여 열기, 도이트, 인쇄 및 인쇄 동사가 있습니다. 바로 가기 메뉴는 다음과 같습니다.
이전 그림에 표시된 바로 가기 메뉴를 확장하는 데 사용되는 레지스트리 항목은 다음과 같습니다.
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
MyProgram.1
(Default) = MyProgram Application
Shell
(Default) = doit
open
command
(Default) = C:\MyDir\MyProgram.exe "%1"
doit
(Default) = &Do It
command
(Default) = C:\MyDir\MyProgram.exe /d "%1"
print
command
(Default) = C:\MyDir\MyProgram.exe /p "%1"
printto
command
(Default) = C:\MyDir\MyProgram.exe /p "%1" "%2" %3 %4
Open With 명령은 첫 번째 구분 기호 위에 있지만 시스템에서 자동으로 생성되며 레지스트리 항목이 필요하지 않습니다. 시스템은 정식 동사 열기 및 인쇄에 대한 표시 이름을 자동으로 만듭니다. doit은 정식 동사가 아니므로 D 키를 눌러 선택할 수 있는 표시 이름 "&Do It"이 할당됩니다. 인쇄 동사는 바로 가기 메뉴에 표시되지 않지만 이를 포함하면 사용자가 프린터 아이콘에 파일을 놓아 인쇄할 수 있습니다. 이 예제에서 %1은 파일 이름과 %2 프린터 이름을 나타냅니다.
Verb의 키에 SuppressionPolicy 값을 추가하여 정책 설정을 통해 동사를 표시하지 않을 수 있습니다. SuppressionPolicy 값을 정책 ID로 설정합니다. 정책을 켜면 동사와 연결된 바로 가기 메뉴 항목이 표시되지 않습니다. 가능한 정책 ID 값은 RESTRICTIONS 열거형을 참조하세요.
미리 정의된 셸 개체에 대한 바로 가기 메뉴 확장
미리 정의된 많은 Shell 개체에는 확장할 수 있는 바로 가기 메뉴가 있습니다. 일반적인 파일 형식을 등록하는 것과 거의 동일한 방식으로 명령을 등록하지만 미리 정의된 개체의 이름을 파일 형식 이름으로 사용합니다.
미리 정의된 개체 목록은 셸 확장 처리기 만들기의 미리 정의된 셸 개체 섹션에서 찾을 수 있습니다. 레지스트리에 동사를 추가하여 바로 가기 메뉴를 확장할 수 있는 미리 정의된 셸 개체는 표에 "동사"라는 단어가 표시됩니다.
임의 파일 형식을 처리하는 애플리케이션 등록
이 문서의 이전 섹션에서는 특정 파일 형식에 대한 바로 가기 메뉴 항목을 정의하는 방법을 설명했습니다. 무엇보다도 바로 가기 메뉴를 정의하면 연결된 애플리케이션이 파일 형식의 멤버를 여는 방법을 지정할 수 있습니다. 그러나 파일 형식에서 설명한 대로 애플리케이션은 사용자가 애플리케이션을 사용하여 애플리케이션과 연결되지 않은 파일 형식을 열려고 할 때 사용할 별도의 기본 프로시저를 등록할 수도 있습니다. 이 항목은 바로 가기 메뉴 항목을 등록하는 것과 거의 동일한 방식으로 기본 프로시저를 등록하기 때문에 여기에서 설명합니다.
기본 절차는 두 가지 기본 용도로 사용됩니다. 하나는 임의의 파일 형식을 열기 위해 애플리케이션을 호출하는 방법을 지정하는 것입니다. 예를 들어 명령줄 플래그를 사용하여 알 수 없는 파일 형식이 열려 있음을 나타낼 수 있습니다. 다른 목적은 바로 가기 메뉴 항목 및 아이콘과 같은 파일 형식의 다양한 특성을 정의하는 것입니다. 사용자가 애플리케이션을 추가 파일 형식과 연결하는 경우 해당 형식은 이러한 특성을 갖습니다. 추가 파일 형식이 이전에 다른 애플리케이션과 연결된 경우 이러한 특성이 원본을 대체합니다.
기본 프로시저를 등록하려면 애플리케이션의 ProgID에 대해 만든 레지스트리 키를 애플리케이션의 HKEY_CLASSES_ROOT\애플리케이션 하위 키 아래에 배치합니다. FriendlyAppName 값을 포함하여 시스템에 애플리케이션에 친숙한 이름을 제공할 수도 있습니다. 애플리케이션의 친숙한 이름은 실행 파일에서 추출될 수도 있지만 FriendlyAppName 값이 없는 경우에만 추출할 수 있습니다. 다음 레지스트리 조각은 친숙한 이름과 몇 가지 바로 가기 메뉴 항목을 정의하는 MyProgram.exe에 대한 샘플 기본 프로시저를 보여 줍니다. 명령 문자열에는 애플리케이션이 임의의 파일 형식을 열고 있음을 알리는 /a 플래그가 포함됩니다. DefaultIcon 하위 키를 포함하는 경우 제네릭 아이콘을 사용해야 합니다.
HKEY_CLASSES_ROOT
Applications
MyProgram.exe
FriendlyAppName = Friendly Name
shell
open
command
(Default) = C:\MyDir\MyProgram.exe /a "%1"
print
command
(Default) = C:\MyDir\MyProgram.exe /a /p "%1"
printto
command
(Default) = C:\MyDir\MyProgram.exe /a /p "%1" "%2" %3 %4
새 하위 메뉴 확장
사용자가 Windows 탐색기에서 파일 메뉴를 열면 첫 번째 명령은 새로 만들기입니다. 이 명령을 선택하면 하위 메뉴가 표시됩니다. 기본적으로 사용자가 하위 폴더와 바로 가기를 만들 수 있도록 하는 두 개의 명령인 폴더와 바로 가기가 포함되어 있습니다. 이 하위 메뉴는 모든 파일 형식에 대한 파일 만들기 명령을 포함하도록 확장할 수 있습니다.
파일 만들기 명령을 새 하위 메뉴에 추가하려면 애플리케이션의 파일에 연결된 파일 형식이 있어야 합니다. 파일 이름 확장명 키 아래에 ShellNew 하위 키를 포함합니다. 파일 메뉴의 새 명령을 선택하면 셸이 새 하위 메뉴에 추가합니다. 명령의 표시 문자열은 프로그램의 ProgID에 할당된 설명 문자열입니다.
하나 이상의 데이터 값을 ShellNew 하위 키에 할당하여 파일 생성 방법을 지정합니다. 사용 가능한 값은 다음과 같습니다.
값 | 설명 |
---|---|
명령 | 애플리케이션을 실행합니다. 실행할 애플리케이션의 경로를 지정하는 REG_SZ 값입니다. 예를 들어 마법사를 시작하도록 설정할 수 있습니다. |
데이터 | 지정된 데이터를 포함하는 파일을 만듭니다. 데이터는 파일의 데이터가 포함된 REG_BINARY 값입니다. NullFile 또는 FileName을 지정하면 데이터가 무시됩니다. |
FileName | 지정된 파일의 복사본인 파일을 만듭니다. FileName은 복사할 파일의 정규화된 경로로 설정된 REG_SZ 값입니다. |
NullFile | 빈 파일을 만듭니다. NullFile에 값이 할당되지 않았습니다. NullFile을 지정하면 Data 및 FileName 값이 무시됩니다. |
다음 그림에서는 파일 형식 및 사용자 지정 아이콘의 예로 사용되는 .myp 파일 형식에 대한 새 하위 메뉴를 보여 줍니다. 이제 MyProgram 애플리케이션이라는 명령 이 있습니다. 사용자가 새 하위 메뉴에서 MyProgram 애플리케이션 을 선택하면 셸은 "New MyProgram Application.myp"라는 파일을 만들어 MyProgram.exe에 전달합니다.
레지스트리 항목은 이제 다음과 같습니다.
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
MyProgram.1
ShellNew
NullFile
MyProgram.1
(Default) = MyProgram Application
DefaultIcon
(Default) = C:\MyDir\MyProgram.exe,2
Shell
(Default) = doit
open
command
(Default) = C:\MyDir\MyProgram.exe "%1"
doit
(Default) = &Do It
command
(Default) = C:\MyDir\MyProgram.exe /d "%1"
print
command
(Default) = C:\MyDir\MyProgram.exe /p "%1"
printto
command
(Default) = C:\MyDir\MyProgram.exe /p "%1" "%2" %3 %4