좋아, 그것은 시작하는 시간이다! 저게 뭐죠? 나는 아직 신비쉘 확장 인터페이스를 사용하는 방법을 말하지 않은? 걱정하지 마세요, 내가 따라 갈 때 설명 할 것입니다. 개념을 설명하고 샘플 코드바로 뒤에 오면 예제를 따르는 것이 더 쉽다는 것을 알게되었습니다. 먼저 모든 것을 설명 한 다음 코드에 도착 할 수 있지만 흡수하기가 더 어렵다는 것을 알게되었습니다. 어쨌든, VC를 발사하고 우리는 시작됩니다. 다음 예제에서는 ShellExecuteEx API 함수를 사용합니다. 성공하면 SEVERITY_SUCCESS로 설정된 심각도 값과 코드 값이 할당된 가장 큰 명령 식별자의 오프셋에 하나 더한 HRESULT 값을 반환합니다. 예를 들어 idCmdFirst가 5로 설정되어 있고 5, 7 및 8의 명령 식별자가 있는 메뉴에 세 개의 항목을 추가한다고 가정합니다. 반환 값은 MAKE_HRESULT(SEVERITY_SUCCESS, 0, 8 – 5 + 1)여야 합니다. 그렇지 않으면 OLE 오류 값을 반환합니다. 파워 포인트에서 VBA 코드를 사용하려면 어떻게해야합니까? 을 사용 하 여이 예제 코드를 사용 하는 방법을 알아봅니다.
자세한 정보와 예제 코드는 랜디 버치의 VBNet 사이트에서 ShellExecute 광기에서 찾을 수 있습니다. 결국, 당신은 매우 간단하지 않은 확장을 작성합니다, 당신은 그것을 디버깅해야합니다. 프로젝트 설정을 열고 디버그 탭에서 „디버그 세션실행” 편집 상자(예: „C:windowsexplorer.exe”)에서 탐색기의 전체 경로를 입력합니다. NT를 사용 하 고 있으며 앞서 설명한 DesktopProcess 레지스트리 항목을 설정 한 경우 F5를 눌러 디버깅을 시작 하면 새 탐색기 창이 열립니다. 해당 창에서 모든 작업을 수행하는 한 해당 창을 닫으면 확장이 해제되므로 나중에 DLL을 다시 작성하는 데 아무런 문제가 없습니다. 각 동사는 콘솔 창에서 응용 프로그램을 시작하는 데 사용되는 명령에 해당합니다. 열려 있는 동사는 일반적으로 지원되기 때문에 좋은 예입니다. .exe 파일의 경우 열기만 응용 프로그램을 시작합니다. 그러나 특정 파일에서 작동하는 응용 프로그램을 시작하는 데 더 일반적으로 사용됩니다.
예를 들어 Microsoft 워드패드에서 .txt 파일을 열 수 있습니다. 따라서 .txt 파일의 열린 동사는 다음 명령: Type: LPCTSTR A 포인터를 지정하는 null-terminate된 문자열에 해당하며, 지정된 동사를 실행할 파일 또는 개체를 지정합니다. Shell 네임스페이스 개체를 지정하려면 정규화된 구문 분석 이름을 전달합니다. 모든 동사가 모든 개체에서 지원되는 것은 아닙니다. 예를 들어 모든 문서 형식이 „인쇄” 동사를 지원하는 것은 아닙니다. 상대 경로가 lpDirectory 매개 변수에 사용되는 경우 lpFile에 대한 상대 경로를 사용하지 마십시오. 이 경우 작업이 실행되는 문자 `url`의 배열입니다. ShellExecute를 사용하면 특정 파일 형식에 등록된 프로그램의 이름이나 위치를 알 필요가 없습니다. Windows는 당신을 위해 그것을 처리합니다. 예를 들어. PDF 파일, 독자, Acrobat 또는 다른 PDF 읽기 응용 프로그램이 설치되어있는 한, 윈도우는 그것을 시작하고 당신을 위해 PDF를로드합니다. 지금까지 많은 사람들이 탐색기에서 확장이 어떻게 생겼는지 궁금해합니다.
한 가지 예는 WinZip입니다 – 그것은 많은 유형의 확장을 포함하고 있으며 그 중 하나는 컨텍스트 메뉴 처리기입니다. 여기서 WinZip이 압축된 파일의 컨텍스트 메뉴에 추가하는 몇 가지 명령: 응용 프로그램은 먼저 Windows 디렉터리PIDL을 검색하고 첫 번째 .bmp 파일을 찾을 때까지 내용을 열거합니다.