2009-09-21 4 views
1

Windows의 쉘 탐색기는 사용자 "인터넷 브라우저"에 대한 링크 인 {{2559a1f4-21d7-11d4-bdaf-00c04f60b9f0}와 같은 전역 개체를 정의합니다. 내 응용 프로그램을 통해 드래그 & 단축키에서 이러한 가치를 가지고 있지만 그것을 열어 그것을 사용하는 방법을 찾을 수 없습니다 ...쉘 객체 clsid에서 ShellExecute를 실행하는 방법은 무엇입니까?

이 개체가 무엇에 대한 정보를 얻고 싶습니다.

  • 누군가이 개체가 무엇인지 Windows에 묻는 방법을 알고 있습니까?
  • 누군가 열 방법을 알고 있습니까?

나는 이러한 개체에 레지스트리에서 읽어 볼 수 있습니다 것으로 나타났습니다 :

initString = HLCR\CLSID\\{CLSID\}\PersistentBag\InitString 
openCommand = HKLM\Software\Clients\{initString}\shell\open\command 

에는 일반적으로 좋은 생각 레지스트리에서 직접 읽을 수 있습니다. 나는이 값들을 읽을 수있는 더 깨끗한 방법을 갖고 싶습니다.

감사합니다.

+0

{2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}은 Run (Win + R)입니다. – Anders

+0

@anders : 당신 말이 맞아요, 나는 레지스트리 주위를 찌르고 잘못된 값을 복사합니다. –

답변

1

fMask 필드를 SEE_MASK_CLASSKEY로 설정하고 lpVerb 필드를 "open"으로 설정하고 lpClass를 GUID로 설정하여 SHELLEXECUTEINFO 구조체를 채워야합니다.

그러나 나는 일하는 것을 결코 얻지 못했습니다. 대신 CreateProcess 호출에 사용할 올바른 유형의 파일을 사용했습니다.

HINSTANCE h = FindExecutable("blank.htm", NULL, buffer); 

    STARTUPINFO si; 
    PROCESS_INFORMATION pi; 
    ZeroMemory(&si, sizeof(si)); 
    si.cb = sizeof(si); 
    ZeroMemory(&pi, sizeof(pi)); 

    char url[MAX_PATH]; 
    sprintf(url, "\"%s\" %s", buffer, (LPCTSTR)m_url); 
    CreateProcess(NULL, url, NULL, NULL, FALSE, 0 , NULL, NULL, &si, &pi); 

.htm 유형의 파일에 대한 기본 뷰어로 정의 된 앱을 엽니 다. 에서

+0

"인터넷 브라우저"뿐만 아니라 이러한 링크를 실제로 실행해야합니다. 첫 번째 팁을 시도해 보겠습니다. 감사. –

0

http://msdn.microsoft.com/en-us/library/ms997573.aspx에서 "쉘 인스턴스 개체와 쉘 확장 만들기"가 기존의 셸 확장 반면

개체를 구현하는 DLL이 필요하다는 이야기입니다, 쉘 인스턴스 객체가에서 알아야 할 모든 것을 검색 기재.

정보를 레지스트리에서 읽는 것이 문서화 된 솔루션이므로 레지스트리를 읽는 것이 안전하다고 보입니다.

관련 문제