일단 BHO에 접근하여 IHTMLDocument2를 얻었다는 가정하에 시작.

IHTMLDocument2  *pHTMLDoc2


BSTR ValueChange;

BSTR TagID;

ValueChange = CStringToBstr(g_BhoTagValueChange);

TagID = CStringToBstr(g_BhoTagID);


CComQIPtr <IHTMLDocument3> pDocu3_ValueChange(pHTMLDoc2);

CComPtr <IHTMLElement> pElement_ValueChange;


pDocu3_ValueChange->getElementById(TagID, &pElement_ValueChange);


CComQIPtr <IHTMLInputElement> pInput_ValueChange(pElement_ValueChange);


if( pInput_ValueChange )

{

pInput_ValueChange->put_value(ValueChange);

}

CStringToBstr()은 Edit Control 에서 입력받은 CString을 BSTR로 변환해주기 위해 사용함.

주요 내용은 

CComQIPtr <IHTMLDocument3> pDocu3_ValueChange(pHTMLDoc2);

로 IHTMLDocument2를 3으로 바꿔주고

pDocu3_ValueChange->getElementById(TagID, &pElement_ValueChange);

입력받은 테그 ID로 해당 엘리먼트를 검색 후

CComQIPtr <IHTMLInputElement> pInput_ValueChange(pElement_ValueChange);

(INPUT테그일경우) IHTMLInputElement로 변환함

정상적으로 변환되었다면 put_value함수를 이용해 값을 변경할 수 있음.

반대로 get_value를 사용하면 해당값을 얻어올 수 있다.

Posted by Nvdark
,