일단 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를 사용하면 해당값을 얻어올 수 있다.