검색결과 리스트
-- VC++에 해당되는 글 48건
- 2012.10.09 익스플로어의 입력박스 후킹
글
비슷한 기능을 필자도 구현해야할 일이 있었는데, 시간 관계상 구현하지 않고 지나간 적이 있다. 아래의 글쓴이가 비슷한 기능에 대해 고민해주신 것 같아 정리해 둔다. (원문에서 글을 약간 수정하였으며, 수정으로 정확한 의미가 틀려질 수도 있으니 원문도 확인 바랍니다)
BHO로 익스플로러에 있는 Input Box 후킹하기 위해 익스플로러 로딩완료 시 OnDocumentcompete 함수 호출되는 것까지 완료되었습니다. 이제 IHTMLDocument2 인터페이스를 사용하여 웹 상의 InputBox Value 후킹하는 것이 남았습니다.
LONG celem;
IHTMLDocument2* pDoc = NULL;
IHTMLElementCollection* pElemColl = NULL;
IDispatch* pDocDisp = this->GetHtmlDocument();
pDocDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pDoc);
m_pDoc = pDoc;
pDoc->get_all(&pElemColl);
pElemColl->get_length(&celem);
for(int i = 0; i < celem; i++)
{
VARIANT varIndex;
varIndex.vt = VT_UINT;
varIndex.lVal = i;
VARIANT var2;
VariantInit( &var2 );
IDispatch* pDisp;
HRESULT hr = pElemColl->item( varIndex, var2, &pDisp );
if ( hr == S_OK )
{
IHTMLElement* pElem;
hr = pDisp->QueryInterface(IID_IHTMLElement,(void **)&pElem);
if ( hr == S_OK )
{
BSTR bstrId = 0;
hr = pElem->get_id(&bstrId);
CString strId(bstrId);
if(strId.Find("B1",0) != -1)
{
IHTMLButtonElement* pButtonElem = NULL;
hr = pDisp->QueryInterface(IID_IHTMLButtonElement, (void **)&pButtonElem);
ConnectButton1(pButtonElem);
}
}
pDisp->Release();
}
}
원래 소스는 ActiveX에서 Html Element Hooking 하기
아래 소스는 IE인터페이스를 이용하여, Loading이 완료된 HTML페이지의 Document문서를 얻어온 뒤, 문서에 있는 HTML태그를 구분하여 bstrId 에 저장합니다. 이제 필요한 태그만 추출해서 DB에 넣는 부분이 남았습니다.
CComQIPtr
void CHelloWordBHO::RemoveImages(IHTMLDocument2* pDocument)
{
HRESULT hr;
long cDoc = 0;
CComPtr
pDocument->get_all(&spDoc);
spDoc->get_length(&cDoc);
for(int i=0; i
varIndex.vt = VT_UINT;
varIndex.lVal = i;
VARIANT var2;
VariantInit(&var2);
IDispatch * pDisp;
hr = spDoc->item(varIndex, var2, &pDisp);
if(hr==S_OK)
{
CComPtr
hr =pDisp->QueryInterface(IID_IHTMLElement, (void**)&spElem);
if(hr==S_OK)
{
BSTR bstrId = 0;
hr = spElem->get_tagName(&bstrId);
SysFreeString(bstrId);
}
}
}
}
출처 : http://ezlang.egloos.com/1113655
'-- VC++' 카테고리의 다른 글
동기화객체 비교 (0) | 2011.08.26 |
---|---|
Thread 동기화 객체 및 IPC의 선택 (0) | 2011.08.26 |
OutputDebugString (0) | 2010.08.06 |
VC++ 코드 실행 시간 측정 방법 정리 (0) | 2009.11.19 |
APC(Asynchronous procedure call)에 대하여 (0) | 2009.10.29 |
RECENT COMMENT