2009-11-18 2 views
0

컴퓨터에서 모든 IDispatch 지원 개체를 열거하고 싶습니다. 지금은 클래스 ID 또는 프로그램 ID가 무엇인지 알아야하지만, 내 컴퓨터를 검사하기 위해 IDispatch를 구현하는 모든 개체를 열거 할 수 있는지 알고 싶습니다.컴퓨터에서 구현되는 모든 IDispatch 개체 열거하기

이것도 가능합니까?

은 어떤 도움이 많이 주시면 감사하겠습니다 :) 아주 이상한 요청을의

답변

1

합니다. 문질러는 "모든"규정에 있습니다. HKCR \ Typelib 키 및 LoadTypeLib()를 통한 간단한 열거 형으로는 충분하지 않으므로 COM 서버는 형식 라이브러리를 게시 할 필요가 없습니다. 실제로는 CoCreateInstance()에 coclass와 QueryInterface (IDispatch)가 있어야합니다. 뿐만 아니라 이것은 천천히, 또한 위험합니다.

왜 이와 같은 일을 실제로 의도하는지 설명하면 더 나은 답변을 얻을 수 있습니다. IDispatch :: Invoke()를 호출하여 인수가 의미하는 바가 무엇인지, 부작용이 무엇인지 생각하지 않고 재난을 대비하는 방법입니다. "ReformatDrive"와 같은 메서드 이름은 사용하지 마십시오.

+0

실제로 IDispatch 구현을 찾는 학문적 연습이 조금 있습니다. 그 중에서도 무엇이 유용하고 안좋은지, 아니면 문서화되어 있지 않은지에 관심이있는 것들이 있습니다. 나는 그들을 찾기 위해 IEnum *을 만들 수 있기를 바랬다. 나는 ClassIDs가 모두 레지스트리에 있다고 가정합니다. 그렇지 않으면 반드시 그렇지 않습니다. – Goz

+0

나는 내가 우연히 발생할 수있는 혼란에 대해 잘 알고 있지만, 똑같이, 나는 또한 이 일을 통해 얻을 수있는 힘 – Goz

관련 문제