CHtmlView加载Html字符串,模拟点击 IHTMLElement click 错误的有关问题2
CHtmlView加载Html字符串,模拟点击 IHTMLElement click 异常的问题2
之前发错板块了。。
问题地址是
http://topic.csdn.net/u/20110602/16/d079b06c-8d65-4598-bb4b-88648075d995.html?seed=891617702&r=73667674#r_73667674
------最佳解决方案--------------------
pElem->click();//异常
----------
你是在什么地方调用的这个函数?
需要在界面线程中,CHtmlView 重载 OnDocumentComplete 中调用。
------其他解决方案--------------------
http://topic.csdn.net/u/20110602/16/d079b06c-8d65-4598-bb4b-88648075d995.html?seed=891617702&r=73667674#r_73667674
------其他解决方案--------------------
公共全局对象
CXHtmlView g_htmlView;
我在一个自定义工作线程中调用,那个线程是用wininet抓去页面的
抓到页面放入CString strHtml;
g_htmlView.Load(strHtml);
g_htmlView.ClickButton(_T("se"));//根据name="se",点击radio按钮
CXHtmlView继承CHtmlView
之前发错板块了。。
问题地址是
http://topic.csdn.net/u/20110602/16/d079b06c-8d65-4598-bb4b-88648075d995.html?seed=891617702&r=73667674#r_73667674
------最佳解决方案--------------------
pElem->click();//异常
----------
你是在什么地方调用的这个函数?
需要在界面线程中,CHtmlView 重载 OnDocumentComplete 中调用。
------其他解决方案--------------------
http://topic.csdn.net/u/20110602/16/d079b06c-8d65-4598-bb4b-88648075d995.html?seed=891617702&r=73667674#r_73667674
------其他解决方案--------------------
公共全局对象
CXHtmlView g_htmlView;
我在一个自定义工作线程中调用,那个线程是用wininet抓去页面的
抓到页面放入CString strHtml;
g_htmlView.Load(strHtml);
g_htmlView.ClickButton(_T("se"));//根据name="se",点击radio按钮
CXHtmlView继承CHtmlView
class CXHtmlView : public CHtmlView
{
public:
CXHtmlView(void);
~CXHtmlView(void);
public:
void Init();
afx_msg void OnDestroy();
virtual void OnDocumentComplete(LPCTSTR lpszURL);
DECLARE_MESSAGE_MAP()
protected:
virtual void PostNcDestroy();
public:
void OnInitialUpdate();
HANDLE m_docComplete; //页面加载完毕事件
public:
CStdioFile m_viewFile;
CString m_viewPath;
void SaveHtmlString(CString strHtml);
public:
void Load(CString strHtml);
void ClickButton(CString elementId);
};
#include "StdAfx.h"
#include "XHtmlView.h"
#include "Public.h"
CXHtmlView::CXHtmlView(void)
{
m_docComplete = ::CreateEvent(0,FALSE,FALSE,0);
}
CXHtmlView::~CXHtmlView(void)
{
CloseHandle(m_docComplete);
this->DestroyWindow();
}
void CXHtmlView::Init()
{
CWnd* pParent = AfxGetApp()->GetMainWnd();
Create(NULL, // 类名
NULL, // 标题
(WS_CHILD
------其他解决方案--------------------
WS_VISIBLE ), // 风格
CRect(0,0,0,0), // 矩形区域
pParent, // /父窗口
NULL, // 控制 ID
NULL); ///框架/文档
OnInitialUpdate();
}
BEGIN_MESSAGE_MAP(CXHtmlView, CHtmlView)
ON_WM_DESTROY()
END_MESSAGE_MAP()
void CXHtmlView::OnDestroy()
{
CHtmlView::OnDestroy();
// TODO: 在此处添加消息处理程序代码
}
//通常,CHtmlView是在virtual void PostNcDestroy()中释放空间,但对话框或者控件中的控制常常是作为堆栈对象实现的,所以,在PostNcDestroy()中不必在做什么。
void CXHtmlView::PostNcDestroy()
{
// TODO: 在此添加专用代码和/或调用基类
//CHtmlView::PostNcDestroy();
}
//页面加载完毕
void CXHtmlView::OnDocumentComplete(LPCTSTR lpszURL)
{
// TODO: 在此添加专用代码和/或调用基类
SetEvent(m_docComplete);
//CHtmlView::OnDocumentComplete(lpszURL);
}
void CXHtmlView::OnInitialUpdate()
{
this->Navigate2(_T("about:blank"));
}
void CXHtmlView::Load(CString strHtml)
{