• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > [急刚解决一个问题,又冒一个]OCX访问网页4次后,网页中的按钮就没有反应了。

[急刚解决一个问题,又冒一个]OCX访问网页4次后,网页中的按钮就没有反应了。

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 [急刚解决一个问题,又冒一个]OCX访问网页4次后,网页中的按钮就没有反应了。等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: [急 刚解决一个问题,又冒一个] OCX访问网页4次后,网页中的按钮就没有反应了。
描述:

我OCX中起线程,采集数据,当往页面上更新4次后,页面上的按钮,我按的话,就没有反应了。但线程还可继续更新页面。但怎么页面就没有反应了。于是我在IE地址栏中输入其它地址,打开的网页页面上的数据也变的不正确(缺这缺那的)。
CPP
// OcxJavaScript.cpp: implementation of the COcxJavaScript class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "SmartOCXCtl.h"
#include "OcxJavaScript.h"
COcxJavaScript::COcxJavaScript(LPVOID handle)
{
    m_pIWebBrowser=NULL;
m_pDocument=NULL;
m_pScript=NULL;
m_handle=(CSmartOCXCtrl*)handle;
CoInitializeEx(NULL, COINIT_MULTITHREADED);
}
COcxJavaScript::~COcxJavaScript()
{
CoUninitialize();
}
BOOL COcxJavaScript::GetIWebBrowser()
{
IOleClientSite* pClientSite= NULL;
IOleContainer* pContainer = NULL;
if (m_handle==NULL) return FALSE;
pClientSite=m_handle->GetClientSite(); 
if(pClientSite==NULL)return FALSE;
pClientSite->GetContainer(&pContainer);
if (pContainer == NULL ) return FALSE;
pContainer->QueryInterface(IID_IHTMLDocument2,reinterpret_cast<void **>(&m_pDocument));
if(m_pDocument==NULL) return FALSE;
m_pDocument->get_Script(&m_pScript);
if(m_pScript==NULL) return FALSE;
return TRUE;
}
HRESULT COcxJavaScript::RunScript(LPCSTR szFunctionName, int nParams, ...)
{
CComBSTR bstrMember(szFunctionName);
DISPID dispid;
HRESULT hr ;
if (m_pScript!=NULL)
{
hr = m_pScript->GetIDsOfNames(IID_NULL,&bstrMember,1,LOCALE_SYSTEM_DEFAULT,&dispid);
if (SUCCEEDED(hr))
{
DISPPARAMS dispparams = { NULL, NULL, 0, 0 };
dispparams.cArgs = nParams;
va_list args;
va_start(args,nParams);
VARIANT *pArgs = new VARIANT[nParams+1];
ZeroMemory(pArgs, (nParams+1) * sizeof (VARIANT));
for (int i=0; i<nParams; i++)
{
LPCSTR p = va_arg(args,LPCSTR);
CComBSTR bstr = p;
bstr.CopyTo(&pArgs[i].bstrVal);
pArgs[i].vt = VT_BSTR;
}
va_end(args);
dispparams.rgvarg = pArgs;
DISPID dispidPut = DISPID_PROPERTYPUT;
dispparams.rgdispidNamedArgs = &dispidPut;
dispparams.cNamedArgs = 0;
EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);
CComVariant vaResult;
UINT nArgErr = (UINT)-1;  // initialize to invalid arg
hr = m_pScript->Invoke (dispid,IID_NULL,LOCALE_USER_DEFAULT,DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);
if (nParams > 0)
delete [] pArgs;
}
}
return hr;
}
头文件
#include "Atlbase.h"
#include "Mshtml.h"
#include <oleacc.h>
class CSmartOCXCtrl;
class COcxJavaScript  
{
public:
COcxJavaScript(LPVOID handle);
virtual ~COcxJavaScript();
private:
CComPtr<IWebBrowser2> m_pIWebBrowser;
CComPtr<IHTMLDocument2> m_pDocument;
CComPtr<IDispatch> m_pScript;
CSmartOCXCtrl *m_handle;
IWebBrowser2 *browser;
public:
BOOL GetIWebBrowser();
HRESULT RunScript(LPCSTR szFunctionName, int nParams, ...);
};
调用例子
CString sTime,sYear,sMonth,sDay,sHour,sMinu,sSecond;
SYSTEMTIME CurTime;
GetLocalTime(&CurTime);
sYear.Format("%d",CurTime.wYear);
sMonth.Format("%d",CurTime.wMonth);
if (sMonth.GetLength()==1) sM /> sDay.Format("%d",CurTime.wDay);
if (sDay.GetLength()==1) sDay="0"+sDay;
sHour.Format("%d",CurTime.wHour);
sMinu.Format("%d",CurTime.wMinute);
sSecond.Format("%d",CurTime.wSecond);
sTime =  sYear+ "-" + sMonth + "-" + sDay+ " " +sHour + ":" + sMinu + ":" +sSecond;
COcxJavaScript  ocxj(this);
if(ocxj.GetIWebBrowser())
{
ocxj.RunScript("showtime",1,sTime);
}
return TRUE;


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • [急刚解决一个问题,又冒一个]OCX访问网页4次后,网页中的按钮就没有反应了。

相关文章

  • 2017-06-04 对话框上添加了一个带窗口的COM组件和几个Radio按钮,单击Radio按钮CPU占用率会100%吗?
  • 2017-06-05 求教一个高难问题?
  • 2017-06-04 做ActiveX要传入ImageList,如何实现呢?真诚表示感谢120分只给一个人,帮顶的只能说句感谢了,感谢你们帮顶
  • 2017-06-05 为什么已经安装的activex控件还是会弹框提示是否安装
  • 2017-06-05 100分问一个有关DLL动态加载的问题
  • 2017-06-04 为什么不给类厂进行计数
  • 2017-06-05 LPDISPATCH该怎么用?
  • 2017-06-05 谁给我一个线程的例子?简单一点的
  • 2017-06-05 一个简洁的多线程错乱问题
  • 2017-06-04 追加100求解IDispatchinvoke方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何跟DLL中接口传输字符串数据类型?
    • 请问各位大虾,有没免费的软件可以监测我本机有哪些注册控件
    • 为什么不能注册为active控件
    • 高手们,帮帮忙!!!!!!!!
    • 继续昨天没解决的IRAPISink问题!
    • 用ATL作个DLL控件,往对话框中添加时出错!急!
    • 决不惜分,UP有分,如何在ATL里实现系统托盘,真正的挑战哦!
    • BSTR传输包含NULL字符串的问题
    • 如何在WORD中禁止复制ActiveX控件!!!(顶者有分)
    • 想上传,怎么搬?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有