How To Retrieve the URL of a Web Page from an ActiveX Control
来源:互联网 发布:appcleaner for mac 编辑:程序博客网 时间:2024/04/27 23:49
http://support.microsoft.com/kb/181678
How To Retrieve the URL of a Web Page from an ActiveX Control
SUMMARY
This article demonstrates how an ActiveX control can retrieve the Uniform Resource Locator (URL) of the Web page (document) on which it is being hosted.
This may be useful for restricting usage of an ActiveX control to a particular domain/site or accessing files when supplied a relative path.
MORE INFORMATION
During the initialization of an embedded ActiveX control, Internet Explorer (IE) passes a pointer to its client site by calling IOleObject::SetClientSite(). This process can be used to either retrieve a moniker for the container or access the document object model to retrieve the URL for the hosting Web page.
This article demonstrates how to retrieve the current URL from the container moniker. For additional information about how to obtain the URL from the document object model, please see the following article in the Microsoft Knowledge Base:
172763 (http://support.microsoft.com/kb/172763/EN-US/) INFO: Accessing the Object Model from Within an ActiveX Control
Follow these steps to retrieve the current URL from the container moniker: 1. Obtain the client site (IOleClientSite) interface pointer. The container calls IOleObject::SetClientSite() to pass a pointer to the client site. Override this method to cache this pointer.
2. Obtain a moniker to the client site by calling IOleClientSite::GetMoniker().
3. Call IMoniker::GetDisplayName() to obtain the URL for the current document.
The following sample code demonstrates how to perform the above steps by overriding the IOleObject::SetClientSite() method in an Active Template Library (ATL) ActiveX control:
Sample Code
STDMETHOD(SetClientSite)(IOleClientSite *pClientSite)
{
if (pClientSite != NULL)
{
// Obtain URL from container moniker.
CComPtr<IMoniker> spmk;
LPOLESTR pszDisplayName;
if (SUCCEEDED(pClientSite->GetMoniker(
OLEGETMONIKER_TEMPFORUSER,
OLEWHICHMK_CONTAINER,
&spmk)))
{
if (SUCCEEDED(spmk->GetDisplayName(
NULL, NULL, &pszDisplayName)))
{
USES_CONVERSION;
CComBSTR bstrURL;
bstrURL = pszDisplayName;
ATLTRACE("The current URL is %s/n", OLE2T(bstrURL));
CoTaskMemFree((LPVOID)pszDisplayName);
}
}
}
return IOleObject_SetClientSite(pClientSite);
}
REFERENCES
For more information on the IOleObject, IoleClientSite, and IOleContainer interfaces, please refer to the Microsoft Visual C++ online help.
- How To Retrieve the URL of a Web Page from an ActiveX Control
- How To: Assign a Macro to an ActiveX Control
- How to pass a value from User Control to the Page
- [WebView] How to display local images from a remotely loaded URL web page?
- How to obtain access to an ActiveX control from its property page 如何从一个控件的属性页中获取对该控件的访问?
- How to get the DOM of a WebBrowser control from a window handle (VB6)
- How to pass ViewState value from web form page to web user control page?
- How to add an ActiveX Control
- how to get the value of an control
- How to remove a block from the particular page?
- How to enter an End-Of-File from the keyboard
- Axure RP Pro - 相关问题 - How to retrieve the URL of IFrame widget
- How to cover an IE windowed control (Select Box, ActiveX Object, etc.) with a DHTML layer.
- How To Change the Background Color of a Tab Control
- How to print the content of a Rich Edit Control
- How to retrieve the Device Unique ID from android device
- How to start a second thread in an MFC-based ActiveX control to fire events in Visual C++
- Generate an Image of a Web Page
- 在asp中处理oracle的clob字段
- [VBS] 常用脚本
- HTML語法大全
- 罗素:自由主义的十诫
- 表中的某些记录插入到另外一个表
- How To Retrieve the URL of a Web Page from an ActiveX Control
- 取整函数
- 为分页找了一个类
- 破窗而入——天无绝人之路!
- 开源供应链之二 -- 程序结构
- How can a program reboot my PC
- 查看dll的导出函数
- CSDN第一期总结之二:ADO.NET + DataGrid的问题
- 基于Lucene/XML的站内全文检索解决方案[摘]