your programing

폴더에 대한 Windows 탐색기에 상황에 맞는 메뉴 항목을 추가하는 방법

lovepro 2020. 10. 4. 12:53
반응형

폴더에 대한 Windows 탐색기에 상황에 맞는 메뉴 항목을 추가하는 방법


레지스트리에 키를 추가하여 Windows 탐색기의 파일에 오른쪽 클릭 상황에 맞는 메뉴 항목을 추가하는 방법을 알아 냈습니다. 즉, Explorer에서 파일을 마우스 오른쪽 버튼으로 클릭하고 해당 파일에 대해 사용자 지정 앱을 실행할 수 있습니다.

폴더에 대해 똑같이하고 싶지만 (아직) 방법을 찾지 못했습니다. 사용자 정의 컨텍스트 메뉴 핸들러 작성 / 작성에 대한 기사를 보았지만 거기에 가지 않겠습니다.

여기 에서 계단식 컨텍스트 메뉴 항목을 바탕 화면과 탐색기의 "컴퓨터"에 추가하는 방법에 대한 기사를 찾았 지만 어떤 폴더에서도 작동하지 않습니다.

컨텍스트 메뉴에 맞춤 앱을 추가하고 파일과 폴더 모두에서 작동하도록하고 싶습니다. 상황에 맞는 메뉴 처리기를 작성하지 않고이를 수행 할 수있는 방법이 있습니까?


Windows 탐색기의 왼쪽 패널 또는 오른쪽 패널의 디렉토리 배경 에서 폴더마우스 오른쪽 버튼으로 클릭 하기위한 컨텍스트 메뉴 :

  1. 관리자 인 경우 HKEY_CLASSES_ROOT \ Directory \ Background \ shell
  2. 일반 사용자 인 경우 HKEY_CURRENT_USER \ Software \ Classes \ directory \ Background \ shell

Windows 탐색기의 오른쪽 패널에서 폴더를 마우스 오른쪽 버튼으로 클릭 하기위한 컨텍스트 메뉴 :

  1. 관리자 인 경우 HKEY_CLASSES_ROOT \ Directory \ shell
  2. 일반 사용자 인 경우 HKEY_CURRENT_USER \ Software \ Classes \ directory \ shell

모든 파일에 대한 컨텍스트 메뉴 :

  1. 관리자 인 경우 HKEY_CLASSES_ROOT \ * \ shell
  2. 일반 사용자 인 경우 HKEY_CURRENT_USER \ Software \ Classes \ * \ shell

모든 경우에:

  1. "shell"아래에 새 키를 추가하고 상황에 맞는 메뉴 항목의 이름을 지정합니다.
  2. 이 키 안에 command (필수 이름) 라는 새 키를 추가합니다.
  3. "command"의 "default"속성을 myprogrampath \ path \ path \ executable.exe % 1 로 편집하여 선택한 파일의 파일 경로와 이름을 사용자 지정 프로그램에 전달합니다.

더 많은 사용자 정의 :

  • 아이콘 추가 : icon아이콘 리소스 경로와 일치하는 값으로 1 단계에서 생성 한 키의 이름이 지정된 문자열 값을 추가합니다 . 사용할 아이콘을 지정하기 위해 정수 인수를 제공 할 수도 있습니다. 예:%SystemRoot%\System32\shell32.dll,3
  • Shift- 클릭시에만 표시 : Extended1 단계에서 만든 키에 대해 이름이 지정된 빈 문자열 값을 추가합니다.
  • 메뉴 항목 레이블 사용자 지정 : 1 단계에서 생성 한 키의 기본값 값 변경
  • 메뉴 항목 위치 변경 : 다음 Position중 하나로 이름이 지정된 문자열 값을 추가합니다 . Top,Bottom

파일 및 폴더에 대한 레지스트리를 통해이 작업을 수행하는 방법을 설명하는 아래 기사에서 솔루션을 찾았습니다.

다음 두 문서는 추가 정보와 옵션을 제공했습니다.


나는 돌아가서이 질문에 대해 구체적으로 많이 언급되지 않았기 때문에 다른 주제 에서도 이에 대해 대답했습니다 .

가장 간단한 방법은 "AppliesTo"라는 키에 문자열 값을 추가하고 값을 "under : {path}"로 설정하는 것입니다.

이 예에서는 T 드라이브 만보고 싶으므로 문자열 값은 "AppliesTo": "under : T :"입니다.

C #에서는 다음과 같이 쉽게 수행 할 수 있습니다.

RegistryKey _key = Registry.ClassesRoot.OpenSubKey("Folder\\Shell", true);
RegistryKey newkey = _key.CreateSubKey("My Menu Item");
newkey.SetValue("AppliesTo", "under:T:");

RegistryKey subNewkey = newkey.CreateSubKey("Command");
subNewkey.SetValue("", "C:\\yourApplication.exe");
subNewkey.Close();

newkey.Close();
_key.Close();

더 깨끗하고 쉽고 빠른 솔루션을 찾았습니다. 텍스트 파일을 만들고, 이러한 내용으로 채우고, 필요에 맞게 업데이트하고, .reg 접미사로 저장하고, 실행합니다 (레지스트리의 사용자 부분에 액세스하기 때문에 관리자 권한이 필요하지 않음). ) :

Windows Registry Editor Version 5.00

; Setup context menu item for click on right panel:
[HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground\command]
@="C:\\yourpath\\executable.exe \"%1\""

; Optional: specify an icon for the item:   
; HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground]
;"icon"="C:\\yourpath\\appicon.ico"

; Optional: specify a position in the menu
; HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground]
;"position"="Bottom"

; -------------------------------------------------------------------------------------

; Setup context menu item for click on folders tree item:
[HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel\command]
@="C:\\yourpath\\executable.exe \"%1\""

; Optional: specify an icon for the item:   
; [HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel]
;"icon"="C:\\yourpath\\appicon.ico"

; Optional: specify a position in the menu
; [HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel]
;"position"="Top"

이 방법으로 구성을 백업 할 수도 있습니다. .reg 파일을 안전한 곳에 저장하기 만하면됩니다. 파일을 시작한 후 수동으로 레지스트리를 편집하는 경우 마우스 오른쪽 버튼을 클릭하고 "내보내기"를 선택합니다.

경로에서 이중 백 스페이스를주의하십시오 : \\


The only good solution I found a really working is : https://superuser.com/questions/1097054/shell-context-menu-registry-extension-doesnt-work-when-default-program-is-other

Add keys in HKEY_CLASSES_ROOT\SystemFileAssociations\your.extension\shell\command Modify the last key with the command you wanna do.

For my purpose it was :

"C:\Program Files (x86)\GPSBabel\gpsbabel.exe" -r -i gpx -f "%1" -x simplify,count=1000 -o gpx -F "%1.gpx"

If I export the it I get a .reg :

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SystemFileAssociations\.gpx\shell\Simplify gpx\command]
@="\"C:\\Program Files (x86)\\GPSBabel\\gpsbabel.exe\" -r -i gpx -f \"%1\" -x simplify,count=1000 -o gpx -F \"%1.gpx\""

참고URL : https://stackoverflow.com/questions/20449316/how-add-context-menu-item-to-windows-explorer-for-folders

반응형