자원 관리자 의 오른쪽 단추 메뉴 에 프로그램 추가
셸 항목
내 가 사용 한 모든 컴퓨터 는 나 에 게 추가 된다.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT/Folder/shell/command prompt/command]
@="cmd.exe"
레 지 스 트 "HKEY CLASSES ROOT / Folder / shell / command prompt / command" 의 기본 값 을 "cmd. exe" 로 설정 합 니 다.이렇게 하면 나 는 명령 행 에서 지정 한 디 렉 터 리 로 빠르게 들 어 갈 수 있다.
HKEY_CLASSES_ROOT 에는 파일 형식 을 나타 내 는 키 가 많 습 니 다.Folder 는 폴 더 를 표시 합 니 다. * 모든 파일 을 표시 합 니 다.파일 형식 에 '셸 / 알림 문자열 / command' 항목 을 추가 하고 이 항목 의 값 을 해당 하 는 명령 줄 로 설정 합 니 다.이렇게 하면 자원 관리자 가 대응 하 는 파일 형식 에서 오른쪽 단 추 를 누 르 면 메뉴 항목 의 내용 이 '알림 문자열' 입 니 다. 이 메뉴 항목 을 선택 하면 command 항목 에서 설정 한 명령 을 실행 합 니 다.예 를 하나 더 보 자.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT/dllfile/shell/Register Component/command]
@="regsvr32 /"%L/""
[HKEY_CLASSES_ROOT/dllfile/shell/Unregister Component/command]
@="regsvr32 /u /"%L/""
[HKEY_CLASSES_ROOT/ocxfile/shell/Register Component/command]
@="regsvr32 /"%L/""
[HKEY_CLASSES_ROOT/ocxfile/shell/Unregister Component/command]
@="regsvr32 /u /"%L/""
[HKEY_CLASSES_ROOT/exefile/shell/Register Component/command]
@="/"%L/" /regserver"
[HKEY_CLASSES_ROOT/exefile/shell/Unregister Component/command]
@="/"%L/" /unregserver"
이 예 는 dllfile, ocxfile, exefile 형식 에 "Register Component" 와 "Unregister Component" 명령 을 추가 합 니 다.이렇게 하면 우 리 는 직접 오른쪽 단추 메뉴 를 통 해 구성 요 소 를 등록 하거나 마 운 트 해제 할 수 있다.HKEY 에서CLASSES_ROOT 에서 볼 수 있 는. dll,. ocx, exe 의 기본 값 은 dllfile, ocxfile, exefile 을 가리킨다.
셸 항목 은 비교적 간단 한 명령 에 적합 합 니 다.오른쪽 단추 메뉴 가 비교적 복잡 한 기능 을 실현 하려 면 윈도 우즈 의 셸 확장 프로 그래 밍 인 터 페 이 스 를 사용 해 야 합 니 다. 즉, 셸 렉 스 항목 을 사용 해 야 합 니 다.
2 셸 렉 스 항목
2.1 셸 확장 을 위 한 COM 구성 요소
UltraEdit 의 오른쪽 단추 메뉴 는 사용 하기에 매우 편리 하 다.그럼 어떻게 이 루어 졌 을까요?레 지 스 트 에서 볼 수 있 습 니 다.
[HKEY_CLASSES_ROOT/*/shellex/ContextMenuHandlers/UltraEdit-32]
@="{b5eedee0-c06e-11cf-8c56-444553540000}"
"{b5eedee 0 - c06e - 11cf - 8c56 - 44455354000}" 은 COM 구성 요소 의 uid 입 니 다."HKEY CLASSES ROOT / CLSID" 에서 찾 을 수 있 습 니 다.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT/CLSID/{b5eedee0-c06e-11cf-8c56-444553540000}]
@="UltraEdit"
[HKEY_CLASSES_ROOT/CLSID/{b5eedee0-c06e-11cf-8c56-444553540000}/InProcServer32]
@="C://Program Files//IDM Computer Solutions//UltraEdit-32//ue32ctmn.dll"
"ThreadingModel"="Apartment"
ue32ctmn. dll 은 UltraEdit 가 제공 하 는 셸 확장 기능 을 실현 한 COM 구성 요소 입 니 다.이 COM 구성 요소 가 IContextMenu 인 터 페 이 스 를 실현 하면 오른쪽 단추 메뉴 를 추가 할 수 있 습 니 다.메뉴 항목 의 아이콘 텍스트 는 IContextMenu 인터페이스의 Query ContextMenu 함수 에서 지정 합 니 다.사용자 가 메뉴 항목 을 선택 하면 윈도 우즈 는 IContextMenu 인터페이스의 InvokeCommand 함 수 를 호출 합 니 다. 이 함수 에서 메뉴 에 대응 하 는 기능 을 수행 합 니 다.
우 리 는 보통 ATL 로 COM 구성 요 소 를 실현 한다.VC 는 완벽 한 가 이 드 를 제공 하기 때문에 ATL 로 COM 구성 요 소 를 실현 하 는 것 은 복잡 하지 않다.인터넷 에서 '윈도 셸 확장 프로 그래 밍 완전 가이드' 라 는 chm 를 찾 을 수 있 으 며 셸 확장 프로 그래 밍 을 실현 하 는 상세 한 지 도 를 포함 하고 있다.이것 은 번역 한 글 입 니 다. chm 에 도 원문 이 포함 되 어 있 습 니 다.예제 코드 는 원문 사이트 에서 다운로드 할 수 있 고 나 도 한 부 를 정리 했다.ALT 마법 사 를 사용 하고 예시 코드 를 모방 하면 우 리 는 자신의 프로젝트 를 만 들 기 쉽다.그리고 Query ContextMenu 와 InvokeCommand 함수 에서 자신의 메뉴 항목 표시 와 기능 을 맞 춥 니 다.'윈도 쉘 확장 프로 그래 밍 완전 가이드' 를 게임 공략 으로 삼 아 관심 있 는 부분 을 찾 아 그대로 하면 된다.
2.2 메뉴 추가 및 제거
추가 메뉴 는 등록 구성 요 소 를 제외 하고 해당 파일 형식 에 '셸 ex / contextMenuHandlers / 설명 이름' 을 추가 하고 이 항목 의 값 을 구성 요소 의 uid 로 설정 합 니 다.uid 는 ATL 프로젝트 를 만 들 때 자동 으로 생 성 됩 니 다.등록 구성 요소 도 등록 표 에 항목 을 추가 해서 완성 했다.메뉴 를 제거 할 때 레 지 스 트 의 해당 항목 만 삭제 하면 됩 니 다.
"셸 ex / contextMenu Handlers" 의 "설명 적 이름" 은 소 용이 없 지만 이 확장 이 어떤 프로그램 에 추가 되 었 는 지 알 수 있 을 것 입 니 다.예 를 들 어 '비 욘 드 비교 2' 가 이상 한 이름 을 지어 서 내 가 지 웠 다.나중에 BC2 의 오른쪽 키 메뉴 가 없어 진 것 을 발 견 했 습 니 다. CLSID 에서 BC2 의 dll 파일 의 uid 를 찾 은 다음 에 '* / shellex / contextMenu Handlers' 에' BC2 '항목 을 추가 하고 기본 값 으로 uid 를 채 우 면 됩 니 다.
구성 요소 와 관련 된 레 지 스 트 항목 은 ATL 프로젝트 를 만 들 때 자동 으로 생 성 되 는 rgs 파일 과 DllRegister Server 와 DllUnregisterServer 함 수 를 볼 수 있 습 니 다.
cnbook 의 경우 오른쪽 메뉴 를 추가 하려 면 다음 레 지 스 트 항목 을 추가 해 야 합 니 다.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT/*/shellex/ContextMenuHandlers/cnbook]
@="{5BB33E44-519C-42A8-8ABF-81478C57A503}"
[HKEY_CLASSES_ROOT/CLSID/{5BB33E44-519C-42A8-8ABF-81478C57A503}]
@="Shellapi.OpenExt"
[HKEY_CLASSES_ROOT/CLSID/{5BB33E44-519C-42A8-8ABF-81478C57A503}/InProcServer32]
@="D://projects//cnbook//cnbook//shellapi.dll"
"ThreadingModel"="Apartment"
[HKEY_CLASSES_ROOT/CLSID/{5BB33E44-519C-42A8-8ABF-81478C57A503}/ProgID]
@="Shellapi.OpenExt"
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Shell Extensions/Approved]
"{5BB33E44-519C-42A8-8ABF-81478C57A503}"="Shellapi.OpenExt"
이 항목 들 만 삭제 하면 메뉴 를 삭제 할 수 있 습 니 다.ProgID 는 ATL 대상 을 삽입 할 때 작성 하 는 ATL 대상 이름 이다.구성 요소 경 로 는 프로그램 에서 프로그램 이 있 는 디 렉 터 리 에 따라 확인 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed사용자 가 지정 한 '모드' 에 따라 대상 텍스트 를 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다. ##포함 되 지 않 음, 역방향 일치 \ ##키워드 앞 뒤 가 맞지 않 고 키워드 만 일치 합 니 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.