コード例 #1
0
ファイル: SimpleBrowser.cpp プロジェクト: ddavison/Jaangle
BOOL SimpleBrowser::ExecuteJavascript(LPCTSTR script)
{
	IHTMLDocument2* pDocument = GetDocument();
	if (pDocument == NULL)
		return FALSE;
	BOOL bRet = FALSE;
	IHTMLWindow2* pHTMLWindow = NULL;
	if (pDocument->get_parentWindow(&pHTMLWindow) == S_OK)// execCommand(_T("testFunction()"), TRUE, value, &ret))
	{
		VARIANT vEmpty = {0};
		CComBSTR bstrFunction = script;
		CComBSTR bstrLanguage = L"javascript";
		HRESULT hr = pHTMLWindow->execScript(bstrFunction, bstrLanguage, &vEmpty);
		bRet = (hr == S_OK);
		pHTMLWindow->Release();
	}
	pDocument->Release();
	return bRet;
}
コード例 #2
0
ファイル: gmview.cpp プロジェクト: Akehi/RTKLIB
//---------------------------------------------------------------------------
void __fastcall TGoogleMapView::ExecFunc(AnsiString func)
{
    IHTMLWindow2 *win;
    IHTMLDocument2 *doc=NULL;
    VARIANT var;
    HRESULT hr;
    wchar_t func_w[1024]={0};
    
    if (!WebBrowser->Document) return;
    WebBrowser->Document->QueryInterface(IID_IHTMLDocument2,(void **)&doc);
    if (!doc) return;
    hr=doc->get_parentWindow(&win);
    doc->Release();
    if (hr!=S_OK) return;
    
    VariantInit(&var);
    ::MultiByteToWideChar(CP_UTF8,0,func.c_str(),-1,func_w,512); 
    hr=win->execScript(func_w,L"javascript",&var);
    VariantClear(&var);
}
コード例 #3
0
	void run( const char *script ){
		IDispatch			*disp;
		IHTMLDocument2		*doc;
		IHTMLWindow2		*win;
		HRESULT				res;
		VARIANT				result;
		wchar_t *buf;
		int sz=MultiByteToWideChar( CP_ACP,0,script,-1,0,0 );
		buf=new wchar_t[sz];
		MultiByteToWideChar( CP_ACP,0,script,-1,buf,sz );
		BSTR bstr=SysAllocString(buf);
		res=iBrowser->get_Document(&disp);
		if (res==S_OK)
		{
			res=disp->QueryInterface(IID_IHTMLDocument2,(void**)&doc);
			res=doc->get_parentWindow(&win);
			result.vt=VT_EMPTY;
			res=win->execScript(bstr,0,&result);
		}
		SysFreeString(bstr);
		delete[] buf;
	}
コード例 #4
0
ファイル: HtmlDlg.cpp プロジェクト: lvshuchengyin/mycode
HRESULT HtmlDlg::OnALinkClickedMethod(IHTMLElement *pElement)
{
	CString attr( _T("href") );
	CString href;
	if( !GetHtmlAttrValue( pElement, attr, href ) )
	{
		MessageBox(_T("href error"));
	}

	MessageBox( href );


	{
		//复选框
		CComPtr<IHTMLInputElement> CkbOpen;  
		GetElementInterface(_T("vehicle_id"), IID_IHTMLInputElement, (void **) &CkbOpen);  
		if (CkbOpen)  
		{  
			VARIANT_BOOL bc=true;  
			CkbOpen->put_checked(bc); 

			VARIANT_BOOL b;  
			CkbOpen->get_checked(&b); 
			CString csb;
			int i = b;
			csb.Format(_T("%d"), i);
			MessageBox( csb );
		}  

		CComPtr<IHTMLElement> spP1; 
		HRESULT hr = S_OK; 
		CString csId = _T("car");
		hr = GetElementInterface( csId, &spP1 ); 
		if( S_OK == hr ) 
		{
			CString csAttr=_T( "value" );
			BSTR bStr = csAttr.AllocSysString();
			VARIANT v;
			//spP1->get_innerHTML(&bStr); 
			spP1->getAttribute( bStr,0, &v );

			CString csShow( v.bstrVal );
			MessageBox( csShow );

			//spP1->put_innerHTML(bstrTable); 
			::VariantClear( &v );
			::SysFreeString( bStr );
		} 
	}

	//call js
	{
		CString csFunc = _T("showAlert()");

		BSTR bStr = csFunc.AllocSysString();
		VARIANT v;
		v.vt = VT_EMPTY;  

		IHTMLWindow2*   pWindow;   
		HRESULT hr = m_spHtmlDoc->get_parentWindow(&pWindow);   

		hr = pWindow->execScript( bStr, L"javascript", &v );

		::VariantClear( &v );
		::SysFreeString( bStr );
	}



	//GotoUrl( _T("http://www.baidu.com/") );

	return TRUE;
}
コード例 #5
0
void ReadiumJSApi::loadJS(QString jScript)
{

#if 0	
	QAxObject* doc = WebBrowser->querySubObject("Document()");
	//IDispatch* Disp;
	IDispatch* winDoc = NULL;
	IHTMLDocument2* document = NULL;

	//332C4425-26CB-11D0-B483-00C04FD90119 IHTMLDocument2
	//25336920-03F9-11CF-8FD0-00AA00686F13 HTMLDocument
	doc->queryInterface(QUuid("{332C4425-26CB-11D0-B483-00C04FD90119}"), (void**)(&winDoc));
	if (winDoc) {
		document = NULL;
		winDoc->QueryInterface(IID_IHTMLDocument2, (void**)&document);
		IHTMLWindow2 *window = NULL;
		document->get_parentWindow(&window);
		QAxObject* documentWin = new QAxObject(document, WebBrowser);
		QAxObject* jScriptWin = new QAxObject(window, WebBrowser);
		//connect(jScriptWin, SIGNAL(exception(int, QString, QString, QString)), this, SLOT(printWinException(int, QString, QString, QString)));
		//jScriptInitialized = true;

		QVariantList params;
		//params.append(javaScript);
		//params.append("alert('Hi')");
		params.append("JScript");
		//QVariant result = jScriptWin->dynamicCall("execScript(QString, QString)", params);
		VARIANT var;
		QString strCode = jScript;
		QString stringLang("JScript");
		BSTR bstrCode = SysAllocString(strCode.toStdWString().c_str());
		BSTR bstrLang = SysAllocString(stringLang.toStdWString().c_str());
		window->execScript(bstrCode, bstrLang, &var);
		SysFreeString(bstrCode);
		SysFreeString(bstrLang);
		document->Release();
		winDoc->Release();
	}
	else {
		//qDebug() << "COULD NOT GET DOCUMENT OBJECT! Aborting";
	}
#else
	if (WebBrowser)
	{
		CComPtr<IDispatch> pDispDoc = WebBrowser->get_Document();
		CComQIPtr<IHTMLDocument2> pHtmlDoc(pDispDoc);
		if (pHtmlDoc)
		{
			CComPtr<IHTMLWindow2>    pMainWin2;
			pHtmlDoc->get_parentWindow(&pMainWin2);

			if (pMainWin2)
			{
				CComVariant    vtRv(0);
				CComBSTR bsCode = jScript.c_str() /*L"alert (\" Hi !\");"*/, bsLang = L"JavaScript";
				HRESULT hr = pMainWin2->execScript(bsCode, bsLang, &vtRv);

				if (!SUCCEEDED(hr))
				{
					//AfxMessageBox(L"Error executing script");
				}
			}
		}
	}


	//QAxObject* qv = WebBrowser->querySubObject("Document()");
	//QAxObject* qv1 = qv->querySubObject("parentWindow");
	//QString script = "(function(){" + jScript + "})()";
	//qDebug() << script;

	/*{
	QString filename = "Data.txt";
	QFile file(filename);
	if (file.open(QIODevice::ReadWrite)) {
	QTextStream stream(&file);
	stream << script << endl;
	}
	file.close();
	}*/

	//QVariantList params;
	//params.append("alert('hello')");
	//params.append("JScript");
	//QVariant result = qv1->dynamicCall("execScript(QString, QString)", params);
	//qv1->dynamicCall("execScript(Qstring)", script, "javascript");
	//qv1->dynamicCall("execScript(Qstring, QString)", script, "JScript");	//, "javascript"
	//qv1->deleteLater();
	//qv->deleteLater();

	//Log.i(TAG, "loadJS: "+jScript);
	//mJSLoader.loadJS("javascript:(function(){" + jScript + "})()");
	//pWebBrowser->dynamicCall(script);

#endif
}