2013-01-19 10 views
3

나는 주변을 둘러 보았지만 COM/ActiveX의 세계가 매우 혼란스러워 보이는 답을 통해 자신을 설득 할 수 없었습니다.
기본적으로 내가 알고 싶은 것은 GUID가 주어지면 ActiveX 컨트롤에 의해 노출 된 모든 인터페이스, 속성 및 메서드를 알 수있는 방법일까요? 나는 특정 자산이 있는지 없는지 물어봐야 할 곳을 읽었다. 그러나 무엇이 있는지를 알기 전에 부동산에 대해 어떻게 물어볼 수 있습니까?
IDispatch는 비슷한 기능을 수행하지만 사용 방법을 알아낼 수는 없습니다. 이것이 작동하는 것이라면 C#의 작은 스 니펫을 사용하면 더 잘 이해할 수 있습니다.ActiveX 구성 요소의 모든 속성을 찾으십시오.

감사

답변

0

ActiveX 컨트롤은 자기 설명해야하고 지원되는 인터페이스 및/또는 속성을 열거 할 수 없습니다. 다른 COM 클래스에서는 특정 인터페이스를 구현하고 특정 필수 인터페이스 집합을 구현하므로 호스트 응용 프로그램에 포함하기에 적합합니다. 즉, 특정 ActiveX 컨트롤의 속성을 찾을 수 없게 될 수 있습니다.

그러나 주어진 컨트롤이 대부분의 컨트롤을 수행하면이 작업을 성공적으로 수행 할 수 있습니다. 컨트롤의 COM 클래스는 일반적으로 레지스트리 참조 나 IProvideClassInfo 인터페이스를보고 알 수있는 typelibrary를 가지고 있습니다. 거기에서 ITypeInfo 인터페이스를 가져올 때부터 IDispatch 클래스의 파생 인터페이스를 찾은 다음이 정보가 들어있는 형식 라이브러리를 사용하여 속성과 메서드를 열거 할 수 있습니다.

0

Microsoft Resource Toolkit에서 OLE/COM Object Viewer을 사용할 수 있습니다. 그러면 모든 속성/메소드/이벤트/등이 나열됩니다.

$a = new-object -comobject ProgId 
#get properties 
$a | Get-Member -membertype properties 
#or get all members 
$a | Get-Member 

을 그리고 C#에서 당신은 Type.GetMembers Method를 사용할 수 있습니다

4

이를위한 PowerShell을 사용할 수 있습니다.