1 VC 通过IHTMLINTEFACE 接口实现网页执行自定义js代码
2 IHTMLDocument2 *pDoc2
3
4 ......
5
6 IHTMLWindow2 *pWindow;
7 HRESULT hr=pDoc2->get_parentWindow(&pWindow);
8 VARIANT ret;
9 ret.vt=VT_EMPTY;
10 CComBSTR func="alert(document.cookie)";
11 CComBSTR lang="JAVAScript";
12 hr=pWindow->execScript(func,lang,&ret);
13
14
15
16 //首先只要得到 ihtmldocument2 接口即可
17 BOOL CIEop::putValue(CString IDorName,CString put_value,DWORD ChoosePtr){
18 IHTMLElementCollection *pAllElement=NULL;
19 if (m_pHTMLDocument2==NULL)
20 {
21 OutputDebugString(_T("LTDLL putValue Failed m_pHTMLDocument2==null"));
22 // initcom();
23 return FALSE;
24 }
25 m_pHTMLDocument2->get_all(&pAllElement);
26 if (pAllElement==NULL)
27 {
28 MessageBox(0,_T("putValue pAllElement is NULL "),_T("错误提示"),MB_OK);
29 return FALSE;
30 }
31 CComPtr<IDispatch> pDispIE;
32 HRESULT hr;
33 switch (ChoosePtr)
34 {
35 case Choose_IHTMLInputTextElment:{
36 hr= pAllElement->item(CComVariant(IDorName.AllocSysString()),CComVariant((long)0),&pDispIE);
37 if (FAILED(hr))
38 {
39 MessageBox(0,_T("putValue pDispIE is NULL put_value="+put_value),_T("错误提示"),MB_OK);
40 return FALSE;
41 }
42 CComQIPtr<IHTMLInputTextElement,&IID_IHTMLInputTextElement> pElement;
43 pElement=pDispIE;
44 put_value.ReleaseBuffer();
45 pElement->put_value(put_value.AllocSysString());
46 }
47 break;
48 case Choose_JavaScript:{
49 hr= pAllElement->item(CComVariant(IDorName.AllocSysString()),CComVariant((long)0),&pDispIE);
50 if (FAILED(hr))
51 {
52 MessageBox(0,_T("putValue pDispIE is NULL put_value="+put_value),_T("错误提示"),MB_OK);
53 return FALSE;
54 }
55 IHTMLWindow2* pIHTMLWindow = NULL;
56 m_pHTMLDocument2->get_parentWindow(&pIHTMLWindow);
57 put_value.ReleaseBuffer();
58 VARIANT pvarRet;
59 pIHTMLWindow->execScript(CComBSTR(put_value.AllocSysString()), CComBSTR("JavaScript"), &pvarRet);
60 pIHTMLWindow->Release();
61 }
62 break;
63 case Choose_Click:{
64 hr= pAllElement->item(CComVariant(IDorName.AllocSysString()),CComVariant((long)0),&pDispIE);
65 if (FAILED(hr))
66 {
67 //MessageBox(0,_T("putValue pDispIE is NULL put_value="+put_value),_T("错误提示"),MB_OK);
68 return FALSE;
69 }
70 CComQIPtr<IHTMLElement,&IID_IHTMLElement> pElement;
71 if (pDispIE==NULL)
72 {
73 return FALSE;
74 }
75 pElement=pDispIE;
76 pElement->click();
77 // VARIANT vOnclick;
78 //
79 // pElement->put_onclick(&vOnclick);
80 }
81 break;
82 case Choose_IHTMLFormElement :
83 {
84 hr= pAllElement->item(CComVariant(IDorName.AllocSysString()),CComVariant((long)0),&pDispIE);
85 if (FAILED(hr))
86 {
87 MessageBox(0,_T("putValue pDispIE is NULL put_value="+put_value),_T("错误提示"),MB_OK);
88 return FALSE;
89 }
90 CComQIPtr<IHTMLFormElement,&IID_IHTMLFormElement> pElement1;
91 pElement1=pDispIE;
92 // pElement1->put_target(CComBSTR("_blank"));
93 pElement1->put_target(CComBSTR(_T("_self")));
94 pElement1->put_action(CComBSTR(_T("action.php")));
95 pElement1->submit();
96 }
97 break;
98 case CHoose_GetText:
99 {
100 hr= pAllElement->item(CComVariant(IDorName.AllocSysString()),CComVariant((long)0),&pDispIE);
101 if (FAILED(hr))
102 {
103 MessageBox(0,_T("putValue pDispIE is NULL put_value="+put_value),_T("错误提示"),MB_OK);
104 return FALSE;
105 }
106 // CComQIPtr<IHTMLElement,&IID_IHTMLElement> pElement1;
107 // pElement1=pDispIE;
108 // pElement1->get_innerText(&m_strVerify);
109
110 }
111 break;
112 }
113 return TRUE;
114 }