2011-09-05 4 views
1

Windows 파일/폴더에 대한 컨텍스트 메뉴 확장을 만들려고합니다. 나는 이미 많은 노력을했지만 아무 것도 나를 위해 일하지 않았다. 이미 32 비트 시스템에 대한 확장이 있지만 오래된 것입니다. 64 비트 시스템에서 C++을 사용하여 다시 만들고 싶습니다.C++ 셸 컨텍스트 메뉴 확장

이 항목은 내가 원했던 것과 가장 근접한 내용입니다. Klick 그러나 이것은 32 비트 시스템 용입니다. 의견을 읽은 후 &을 x64 용으로 빌드 할 수있었습니다.

내 64 비트 시스템에서 system32/regsvr32.exe를 사용하여 등록하면 성공적으로 등록되었음을 알립니다. 모든 레지스트리 항목이 올바르게 작성됩니다. 그러나 메뉴 항목이 나타나지 않습니다. 나는 아무 이유도 가지고 있지 않다 ...

누군가 나를 도울 수 있습니까? 원하는 경우 프로젝트를 업로드 할 수 있습니다.

UPDATE

나는 다음과 같은 것들이 위의 링크에서 원래 프로젝트를 사용하여 변경 : 내가 컴파일 couln't부터 "64"

2)에

1) 설정 대상을

2.1) (가)에 stdafx.h에 포함하기 전에 내가 추가 : 그것은, 내가 다음 사항을 변경

#define _ATL_NO_UUIDOF 

2.2) 여기 UINT_PTR하는 UINT 변경 : 모든 파일 형식에 apper해야 있도록

HRESULT CFSBankShellExtension::GetCommandString (
UINT_PTR idCmd, 
UINT uFlags, 
UINT* pwReserved, 
LPSTR pszName, 
UINT cchMax) 

3) 나는 .RGS 파일에 *에 txtfile 변경되었습니다.

4) 나는 컴파일하고 당신이 날 도와 할수 없어 경우 x64 시스템에서 작동하는 템플릿을 업로드 할 수 있다면

, 그것은 멋진 것 등록 할 수 있었다. 에

+0

첫 번째 단계는 찾아이다 방법. SysInternals procexp 도구를 사용하고 하단 창에서 DLL보기를 전환 해보십시오. –

+0

거기 있어요! SimpleExt.dll을 검색하여 procexp에서도 찾았습니다. 그래서 ... 다음은? –

+0

Visual Studio를 사용하고 있습니까? 프로젝트를로드하고 explorer.exe에 VS 디버거를 연결하고 확장 프로그램의 메서드에 중단 점을 설정합니다. 그런 다음 마우스 오른쪽 버튼을 클릭하여 함수가 실제로 호출되는지 확인하십시오. 그들이 부름을받은 경우, 단계별로 단계를 밟아 그들이 잘못되는 부분을 찾으십시오. –

답변

1

내 프로젝트를 위해 밖으로 일로서이 문서에서는 도움이 될 수도 .. 모든 파일, 폴더

Simple shell context menu

컨텍스트 메뉴, 드라이브

은 할 수도 인맥 상황에 맞는 메뉴 모든 파일, 폴더 및 드라이브를 으로 추가하여 파일 유형의 *, Directory 및 Drive 레지스트리에 항목을 추가합니다. 키.

REGEDIT4

[HKEY_CLASSES_ROOT \ 디렉토리에 \ 셸 \ cmd를] @ = "여기서 명령 창 열기"

예를 들어, XP PowerToys에 다음 레지스트리 스크립트를 사용하여 모든 폴더에 여기에 명령 창 열기 메뉴 추가

[HKEY_CLASSES_ROOT \ 디렉토리 \ 셸 \ cmd를 \ 명령] @ = "cmd.exe를/K \"CD %의 L의 \ ""당신의 DLL이 실제로 탐색기에로드 된 경우

+0

고마워,하지만 이것은 나를 위해 충분히 유연하지 않습니다. 여러 파일/폴더를 선택한 다음 마우스 오른쪽 버튼으로 클릭하면 메뉴 항목이 나타납니다. 선택한 모든 파일을 검색하고 조건에 따라 메뉴 항목을 표시할지 여부를 결정합니다. 그래서 그것을 위해 DLL을 만들어야합니다. –

관련 문제