2013-03-28 2 views
1

바탕 화면을 마우스 오른쪽 단추로 클릭하면 "새"하위 메뉴가 포함 된 셸 상황에 맞는 메뉴가 나타납니다..NET 응용 프로그램의 Windows 셸에서 새 개체 목록을 프로그래밍 방식으로 표시하는 방법

예 1 :

Shell New Object List

예 2 :

enter image description here

궁금 내 C#의 WPF 응용 프로그램에이 기능을 추가 할 수 있습니다? 내 응용 프로그램의 상황에 맞는 메뉴에서 이러한 항목을 배치 할 수 있지만 모든 항목을 가져 오는 방법 및 선택한 항목 (예 : 새 기본 파일 만들기)을 실행하는 방법을 모르겠습니다.

COM 상호 운용성이 필요하다고 생각하지만 온라인에서 샘플 코드를 찾을 수 없습니다 (관리되지 않는 예제조차도 없음). 나는 전체 메뉴 컨텍스트 (gong .net shell lib를 사용하여)를 보여 주려고했지만 "New"하위 메뉴가 없어서 쉘 컨텍스트 메뉴의 일부가 아닌 Windows 탐색기에 동적으로 추가 될 수 있습니다. 전체 컨텍스트 메뉴를 표시해야하는 경우에도 Windows 탐색기에서이 기능을 재사용하고 싶습니다.

답변

3

이러한 것을 ShellNew 클래스라고합니다. 그것들은 Windows가 찾는 레지스트리 키일뿐입니다.

http://sourceforge.net/projects/shellnewhandler/

난 당신이 레지스트리에서이 목록을 검색하고 응용 프로그램에서 그들을 채우려 같은데요 :

여기에 그들을 사용에 대한 몇 가지 도우미 기능이있는 오픈 소스 프로젝트이다?

필요한 정보의 예로서 regedit을 열고 HKEY_CLASSES_ROOT으로 이동 한 다음 ".txt"키워드를 찾습니다. 그것은 "ShellNew"키를 가지고 있고 그것은 또한 notepad.exe에서 문자열 리소스로 새 파일 이름을 검색한다고 생각합니다.이 파일은 선택 사항이지만 "New Text Document.txt"이름으로 제공됩니다. 또한 .txt 레지스트리 키의 기본 키는 "txtfile"입니다. 이것은 파일 유형을 설명하고 아이콘에 대한 경로를 제공하는 다른 키를 가리 킵니다.

+0

레지스트리로 직접 작업하지 않고이 목록을 가져 오는 방법이 있습니까? 예 : 일부 API 또는 COM interop? 또한 새 파일을 만드는 명령을 실행하는 방법은 무엇입니까? 이것은 .txt 파일에서는 쉽지만 WinRar가 설치된 시스템에서는 .rar와 같은 다른 사용자 정의 유형의 경우 까다 롭습니다. 레지스트리 파싱은 대개 권장되지 않으며 이러한 서비스 팩이 새로운 서비스 팩 또는 Windows 버전에서 변경된 경우 내 앱이 손상됩니다. 고맙습니다. – matori82

+0

대부분의 셸 기능이 응용 프로그램에서 수행되지 않으므로 Windows에서 API를 노출한다고 생각하지 않습니다. 앱이해야하는 범위를 벗어났습니다. 즉, 나는 오래된 애플 리케이션과의 호환성을 깨뜨리기 때문에 조만간 구조를 변경할 것이라고 생각하지 않는다. 나는 그것이 Win95/Win98 이후로 바뀌 었다고 생각하지 않는다. –