我是使用cwebbrowser2控件来浏览网页。现在打开一个网页,我想向其中的input框中填写数据,并点击按钮提交表单。请问这个动作如何实现!!请提供相应的代码。 谢谢。对了,告诉我需要包含哪些头文件。在对话框中使用。
解决方案 »
- 序列化 图片
- 如何限定非模态对话框只能在CFrame的客户区内移动
- MFC绘图问题
- 急~~怎样在多文档中动态创建视图
- 问题:C++中结构体数组
- VC新手:如何在SDI程序中的CmyApp类中读写CmyView类中的变量?多谢!
- 请问我在辅助线程中的控制函数中如用SetDlgItemText(IDC_MS,ms),在关闭程序的时候CPU就会长满,程序就死了,为什么?
- 如何在删除memdc上的线时不把背景也删掉
- 怎样使用GetProcessTimes调用?
- ===作了两个DLL(分别是两个钩子)打算挂给同一个exe,但是在初始化的时候却不成功,大虾给指点?
- 在VC中使用水晶报表9.2出现的问题
- 寻找多线程此查询数据库的例子.
包含的头文件是
#import <mshtml.tlb> // Internet Explorer 5
#import <shdocvw.dll>
#include "Shlwapi.h"
#pragma comment(lib,"Shlwapi.lib")
下面是COM实现的代码
CoInitialize(NULL);
SHDocVw::IShellWindowsPtr m_spSHWinds;
if(m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows)) == S_OK)
{
IDispatchPtr spDisp; long nCount = m_spSHWinds->GetCount();
for (long i = 0; i < nCount; i++)
{
_variant_t va(i, VT_I4);
spDisp = m_spSHWinds->Item(va);
SHDocVw::IWebBrowser2Ptr spBrowser(spDisp);
if (spBrowser != NULL)
{
IDispatchPtr spDisp;
if(spBrowser->get_Document(&spDisp) == S_OK && spDisp!= 0 )
{
MSHTML::IHTMLDocument2Ptr spHtmlDocument(spDisp);
MSHTML::IHTMLElementPtr spHtmlElement;
if(spHtmlDocument==NULL)
continue;
spHtmlDocument->get_body(&spHtmlElement);
if(spHtmlDocument==NULL)
continue; HRESULT hr; MSHTML::IHTMLElementCollection* pColl=NULL;
hr=spHtmlDocument->get_all(&pColl); if(pColl!=NULL&&SUCCEEDED(hr))
{
long lcount = 0;
pColl->get_length(&lcount);
for(int i=0;i<lcount;i++)
{
_variant_t index;
index.vt=VT_I4;
index.intVal=i;
IDispatchPtr disp;
disp=pColl->item(index,index);
....略
}}网页文档的接口为IHTMLDocument2可以通过IE COM对象的get_Document方法来得到网页的接口如下语句:
//hr = m_spWebBrowser2- >get_Document(&spDisp);
//CComQIPtr< IHTMLDocument2,
//&IID_IHTMLDocument2 > spHTML;
//spHTML = spDisp;
编程方法如下:一、在对话框中加入一edit控件。通过classwizard为edit控件添加成员变量。
Category为control.TYPE为CEdit ,成员为m_edit.
点OK二、不要去掉原来对话框上的“确定”按钮。
也通过classwizard为控件添加变量和单击的消息。
再点edit code进入编辑代码;以下内容为在其中插入的代码void CWebBrowserDlg::OnOK()
{
// TODO: Add extra validation here//m_browser.Navigate(m_url, NULL, NULL, NULL, NULL);
CString string;m_edit.GetWindowText(string);
m_browser.Navigate(string, NULL, NULL, NULL, NULL);
//注释掉下面这句
// CDialog::OnOK();}