C와 C++은 포인터 및 가상테이블을 통해서 객체에 접근할 수 있지만...
스크립트 언어에서도 객체에 접근할 수 있는 방법을 제공해야 한다.
예 : 스크립트 언어에서 객체 사용법
<object id="CLSID" base="URL">
자동화
Automation Component : 자동화 서버
Automation Controller : 자동화 클라이언트
Method : operation(기능)
Property : 상태 정보. 하나의 변수로 나타낼 수 있다. get과 set할 수 있다.
Event : component가 controller에게 알려준다. (fire)
장점
스크립트 언어를 사용하는 응용 프로그램에서도 자동화 개체 접근 가능.
Proxy/Stub DLL 불필요
단점
실행 속도 느림 -> 이중 인터페이스
데이터형의 제한(BSTR과 VARIENT)
IDispatch 인터페이스
GetTypeInfoCount
GetTypeInfo
GetIDsOfNames(NULL, 구하고자 하는 메소드 속성명, 배열 수(보통 1), locale, out:DISPID)
Invoke(in:DISPID, NULL, locale, in:호출할 형태(4), 매개변수, 리턴된 결과, 예외상황 정보, 에러 매개변수 인덱스)
호출할 형태
DISPATCH_METHOD(메소드)
DISPATCH_PROPERTYGET(속성 읽기)
DISPATCH_PROPERTYPUT(속성 쓰기)
DISPATCH_PROPERTYPUTREF
interface IAddBack : IDispatch{
[id(1), helpstring("메서드 Add")] HRESULT Add(void);
[propget, id(2), helpstring("속성 AddEnd")] HRESULT AddEnd([out, retval] SHORT* pVal);
[propput, id(2), helpstring("속성 AddEnd")] HRESULT AddEnd([in] SHORT newVal);
};
※ 위의 idl파일의 id 숫자 값이 DISPID값이 된다.
사용예
obj.prop = propValue // putValue 자동 호출
obj.Method
Dual Interface
Late Binding
자동화 컨트롤러가 실행 시간에 자동화 개체의 속성이나 메소드와 binding
실행시간에 동적으로 자동화 개체의 기능을 결정
일반적인 스크립트 언어에서 사용하는 방법
사용예시
vVal.boolval = 값;
사용예시
bstr = SysAllocString(szStr);
'컴퓨터 공부 > COM&ActiveX' 카테고리의 다른 글
[6월 16일 3교시] 자동화(automation) 컨트롤러 (0) | 2009.06.16 |
---|---|
[6월 16일 2교시] 자동화(automation) 컴포넌트 (0) | 2009.06.16 |
[6월 15일 3교시] ATL2 (0) | 2009.06.15 |
[6월 15일 2교시] ATL 1 (0) | 2009.06.15 |
[6월 15일 1교시] tlb를 통한 COM 객체 생성 (0) | 2009.06.15 |