2009-12-15 3 views
1

MSAA가 COM 기반이라면 궁금합니다. CreateObject ("Accessibility")를 사용하여 인스턴스를 만들고 메서드를 호출 할 수 있어야합니다. 나는 그 일을 성공하지 못했습니다. "OLEACC.DLL"SYSTEM32 있고 Windows에 등록되어 있습니다. 그러나 CreateObject가 실패합니다.MSAA COM 기반?

의견이 있으십니까?

AccessibleObjectFromPoint()와 같은 함수를 사용하여 주어진 지점에서 컨트롤의 IAccessible 개체를 가져오고 싶습니다.

아무도 그런 경험이 없었습니까? 모든 입력이 높게 평가 될 것이다

,

감사합니다,

카밀은

답변

2

는 MSAA는 COM을 기반으로합니다. 그러나 공동 제작 가능한 클래스가 노출되지 않으며 인터페이스 만 노출합니다. 그것이 당신이 할 수없는 이유입니다 CreateObject().

AccessibleObjectFromPointAccessibleObjectFromWindow과 같은 MSAA가 노출 된 API는 dll 내보내기 C++ 방법입니다. 적절한 lib를 링크하거나 LoadLibrary/GetProcAddress을 함수 이름으로 사용하여 C++에서 사용할 수 있습니다. C#에서 Pinvoke.net에서 P/nvoke 선언을 얻을 수 있습니다. 예를 들어 AccessibleObjectFromWindow의 DllImport가 있습니다.

+0

Thanks Franci, VBScript를 통해 MSAA에 액세스 할 수 없다는 의미입니까? 그런데 OLEACC.DLL에 대한 참조를 추가하면 개체 브라우저에 노출 된 "CAccPropServices"클래스가 표시됩니다. 이 클래스가 공동 작성 가능하다는 것을 의미하지 않습니까? 이전에 언급 한 함수 (AccessibleObject ...)가이 calss 메서드가 아니라는 것을 이해합니다.이 클래스의 메서드 인 "SetHwndPropStr"을 사용하고 싶습니다. Cheers, Kamil - – kamilimak

+0

VBScript를 통해 MSAA에 액세스하는 방법을 모르겠습니다. CAccPropServices coclass까지는 클래스가 형식 라이브러리에 노출되어 있다고해도이를 작성할 수있는 클래스 팩터 리가 있음을 의미하지는 않습니다. Btw, 내가 아는 한,이 클래스는 응용 프로그램에서 직접 사용하기위한 것이 아닙니다. –

+1

MSAA는 IDispatch를 지원하며 VBScript 또는 모든 후기 바인딩 언어에서 사용할 수 있습니다. –

관련 문제