跪求WebBrowser的资料~~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跪求WebBrowser的资料~~相关的知识,希望对你有一定的参考价值。

急求WebBrowser控件的各项属性和方法的资料~~
偶不会用哟~~
顺便问一个
偶执行 WebBrowser1.Document.body.All(0).Value 时老提示"对象不支持该属性或方法"
这是怎么回事?偶在网上找到的好多代码都是酱子写的呀~~
麻烦各路英雄贴个具体的地址~~真是急死了~~
解决了加200分~~
多谢两位~~
忘了说,偶用的是VB6
能不能给个具体的代码,例如在百度输入"123",点搜索~

一楼的大哥,好像没有Stream类型啊?请问您用的是不是.Net?偶用的是VB6呢~~

在 VisualBasic 应用程序是承载 WebBrowser 控件, 更改的属性包存储属性值是相当容易。 Visual Basic .frm 文件用于窗体包含 WebBrowser 控件中设置这些属性的值。

下面是用于 VisualBasic 应用程序承载 WebBrowser 控件的 .frm 文件部分: Begin SHDocVwCtl.WebBrowser WebBrowser1
Height = 3015
Left = 240
TabIndex = 0
Top = 120
Width = 5655
ExtentX = 9975
ExtentY = 5318
ViewMode = 1
Offline = 0
Silent = 0
RegisterAsBrowser= 0
RegisterAsDropTarget= 1
AutoArrange = 0 'false
NoClientEdge = 0 'False
AlignLeft = 0 'False
ViewID = "0057D0E0-3573-11CF-AE69-08002B2E1262"
Location = ""
End

您会发现, 一部分属性写入该文件, 如 RegisterAsBrowser 和 RegisterAsDropTarget, 有关联由 WebBrowser 控件公开 COM 属性方法。 更改这些属性在 VisualBasic 属性窗口或使用 WebBrowser 方法在运行时的值。 其他, 如 AutoArrange 和 ViewMode 只能通过编辑此 .frm 文件更改。 有关其可通过 WebBrowser 方法, 设置属性请请参阅 MSDN 联机研讨会了本文参考部分中列出的 " 重新使用浏览器 Technology " 部分。

为了设置存储在 C++ 应用程序, 属性包属性有几点所要做。 (注意, 本文中示例 C++ 代码将 AutoArrange 属性设置为 True 以便导航到文件夹, 时将自动排列所有文件夹项目。 1. 应用程序必须实现 IPropertyBag。 例如, 如果您承载 WebBrowser 控件可以实现此接口只通过继承从 IPropertyBag, ATL 应用程序中输入到 COM 映射, 它和实现方法示: class ATL_NO_VTABLE CAtlBrowser :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CAtlBrowser, &CLSID_CAtlBrowser>,
public CWindowImpl<CAtlBrowser>,
public IDispatchImpl<IAtlBrowser, &IID_IAtlBrowser,
&LIBID_ATLBROWSERLib>,
public IOleClientSite,
public IOleInPlaceSite,
public IPropertyBag // <-- Inheriting from IPropertyBag

public:
// COM Map
BEGIN_COM_MAP(CAtlBrowser)
COM_INTERFACE_ENTRY(IAtlBrowser)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IOleClientSite)
COM_INTERFACE_ENTRY(IOleWindow)
COM_INTERFACE_ENTRY(IOleInPlaceSite)
COM_INTERFACE_ENTRY(IPropertyBag) // <-- COM map entry
END_COM_MAP()

// IPropertyBag Methods
STDMETHOD(Read)(LPCOLESTR pszPropName, VARIANT* pVar,
IErrorLog* pErrorLog)

USES_CONVERSION;

switch(pVar->vt)

case VT_BOOL:
if (!strcmp(OLE2T(pszPropName), "AutoArrange"))
pVar->boolVal = VARIANT_TRUE;
break;
default:
break;
;

return S_OK;


STDMETHOD(Write)(LPCOLESTR pszPropName, VARIANT* pVar)

USES_CONVERSION;

ATLTRACE("%s ", OLE2T(pszPropName));

switch(pVar->vt)

case VT_I4:
ATLTRACE("%ld\n", pVar->lVal);
break;
case VT_BSTR:
ATLTRACE("%s\n", OLE2T(pVar->bstrVal));
break;
case VT_BOOL:
ATLTRACE("%hu\n", pVar->boolVal);
break;
default:
ATLTRACE("\n");
break;
;

return S_OK;

;

2. 之后创建 WebBrowser 控件, 调用 QueryInterface 来检索指针指向 WebBrowser 控件的属性包 - IPersistPropertyBag。
3. 您检索到属性包, 指针后告诉 WebBrowser 控件通过调用 IPersistPropertyBag::Load() 并传递到您实现 IPropertyBag 指针从您 IPropertyBag 接口加载其属性。
当调用 Load 方法, WebBrowser 控件将调用 IPropertBag::Read() 方法对于每个属性, 其属性包中存储后。 它将读取方法设置的属性包所示上面数字 1 中存储属性值中。

注意 IPersistPropertyBag::Load 可以调用一次。 与一个 HRESULT 是 E_UNEXPECTED 要加载任何后续调用将失败。

您可以指示 WebBrowser 控件来通过调用 IPersistPropertyBag::Save() 保存到您 IPropertyBag 实现某些或全部属性。 当您调用此函数, WebBrowser 控件将调用 IPropertyBag::Write() 方法对属性包中每个属性后。 可以指示 WebBrowser 控件将其属性保存到 IPropertyBag 实现随时调用 IPersistPropertyBag::Save()。

以下是 ATL 源代码创建的 WebBrowser 控件的实例, 检索 WebBrowser 控件 IPersistPropertyBag, 指示 WebBrowser 控件加载属性并保存它们。 //
// Create the WebBrowser control
//
CComPtr<IOleObject> spOleObject;
HRESULT hr = CoCreateInstance(CLSID_WebBrowser, NULL, CLSCTX_INPROC,
IID_IOleObject, (void**)&spOleObject);
if (FAILED)
return hr;

// Set the WebBrowser's properties
IPersistPropertyBag* pPPBag;
hr = spOleObject->QueryInterface(IID_IPersistPropertyBag,
(void**)&pPPBag);

if (SUCCEEDED(hr))

hr = pPPBag->Load(this, NULL);
hr = pPPBag->Save(this, FALSE, TRUE);

pPPBag->Release();


注意 : 属性包从 MFC 应用程序中存储 WebBrowser 属性设置是可能, 但非常困难。 作为提到之前, IPersistPropertyBag::Load() 可调用一次。 还, IPersistPropertyBag::InitNew() 后能调用此方法。 当创建 WebBrowser 控件承载 WebBrowser 控件使用包装类 (CWebBrowser2) 或者 ChtmlView, Microsoft 基础类 (MFC) 应用程序中时 MFC 库将调用 InitNew() 或者 Load()。 调用哪个方法取决于条件的数。 这意味着, 当您从应用程序, 调用 IPersistPropertyBag::Load 与一个 HRESULT 是 E_UNEXPECTED 失败。

因此, 如果要设置属性包, 中存储 WebBrowser 属性必须创建并手动站点 WebBrowser 控件。 无法使用包装类 (CWebBrowser2) 或 CHTMLView。
参考技术A Visual Basic(用法)
Dim instance As WebBrowser
Dim value As Stream

value = instance.DocumentStream

instance.DocumentStream = value

C#
public Stream DocumentStream get; set;

C++
public:
property Stream^ DocumentStream
Stream^ get ();
void set (Stream^ value);


J#
/** @property */
public Stream get_DocumentStream ()

/** @property */
public void set_DocumentStream (Stream value)

JScript
public function get DocumentStream () : Stream

public function set DocumentStream (value : Stream)

以上是关于跪求WebBrowser的资料~~的主要内容,如果未能解决你的问题,请参考以下文章

如何解决VB中WebBrowser控件持续打开网页占用的内存

C#webbrowser 跨域访问时 如何获得对此网页的绝对权限

webBrowser执行js的方法,并返回值,c#后台取值

利用WebBrowser控件实现百度自动搜索

C#webbrowser控件是不是能获取JS加载的数据

C#winform程序怎么在webbrowser中打开网页???