在IE的窗口中,在右键菜单中选择自己加入的保存命令,将当前打开的网页内容加入到自己的程序中,就像 超星阅览器 实现的功能
解决方案 »
- 关于MFC ListCtrl控件的问题
- 入门问题,会点C#,纯C++,请问mfc界面制作过程,谢谢
- 关于多文档与切分窗口的问题
- 页面activex控件调用,怎样将对话框控件嵌入在web页面上。
- CString为什么不能用,调试的时候watch:ERROR:cannot display value急急急!在线等!!
- 小师妹快要急死了!在线等待---关于InstallShield的打包问题,一定给分!
- 问问原始套接字的迷惑。
- 动态数据在图形图像上的显示(分不够可以加,急)
- 万分急:我下的vbroker为什么安装不了,提示说要先安装JRE,可我有啊,我那是JDK1.2,里面装了JRE,还要做些什么才好呢? 请高手与我联系OICQ 22181113
- 求助
- 急!!彩色bmp图片如何变成黑白图片并存入文件(不显示在窗口中)?
- 如何动态创建文本框,要几个就几个,并可随意对其中一个更改属性
IWebBrowser是怎么用的?如何把IE打开的网页直接保存成mht文件?
no_namespace rename("EOF", "EndOfFile")
#import no_namespace rename("EOF", "EndOfFile")...void SaveWholePage(LPCTSTR page_url,LPCTSTR save_filename)
{
CoInitialize(NULL);
{
IMessagePtr iMsg(__uuidof(Message));
IConfigurationPtr iConf(__uuidof(Configuration));
iMsg->Configuration = iConf;
try
{
iMsg->CreateMHTMLBody(
page_url,
cdoSuppressNone,
"domain\\username",
"password");
}
catch(_com_error err)
{
// handle exception
}
_StreamPtr pStream=iMsg->GetStream();
pStream->SaveToFile( save_filename,
adSaveCreateOverWrite);
}
CoUninitialize();
}
Sample Usage: SaveWholePage("http://www.zaobao.com/gj/zg002_050203.html",
"test.mht");参考:http://www.codeguru.com/ieprogram/SaveWholePage.html
另外一个问题,你的代码可以用在win98下吗?是不是各版本的操作系统都好用?
HKEY_CURRENT_USER
{
NoRemove SOFTWARE
{
NoRemove Microsoft
{
NoRemove 'Internet Explorer'
{
NoRemove MenuExt
{
ForceRemove '另存为' = s 'res://%MODULE%/SaveAs'
{
Val 'Contexts' = d '247'
}
}
}
}
}
}
编写HTML资源文件:
在资源文件中调用组件方法:<script language="VBScript">
On Error Resume Next
set IEAssistant = CreateObject( "IEAssistant.Operator" )
if err<>0 then
Alert("Error in create object!")
else
IEAssistant.SaveAs
end if
set IEAssistant = nothing
</script>编写组件方法,实现后期绑定GetIDsOfNames ,Invoke
SaveAs
IWebBrowser2 *browser = NULL;
browser=GetIEFromWnd();
if(browser!=NULL){
//////////////////////////
CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> pDocument;
IDispatch *pDisp = NULL;
HRESULT hr = browser->get_Document(&pDisp);
if (SUCCEEDED(hr) && pDisp!=NULL) {
pDocument = pDisp;
pDisp->Release();
CComPtr<IHTMLSelectionObject>pSelectionObj;
hr=pDocument->get_selection(&pSelectionObj);
if(SUCCEEDED(hr)){
hr=pSelectionObj->createRange(&pDisp );
CComQIPtr<IHTMLTxtRange> pTextRng;
pTextRng=pDisp;
pDisp->Release();
CComBSTR bstr;
pTextRng->get_text(&bstr);
if(bstr.Length ()!=0){
CFileDialog fd(FALSE,_T("*.Txt"),"SelectText.txt",NULL,_T("Text Files(*.txt)\0*.txt\0"),GetActiveWindow());
if(fd.DoModal ()==IDOK){
USES_CONVERSION;
if(IsFileExist(fd.m_szFileName)){
int nYESNO=MessageBox(NULL,"File Existed, Ovewrite it?","Infomation",MB_YESNO|MB_ICONINFORMATION);
if(nYESNO==IDYES){
SaveToFile(fd.m_szFileName,(BYTE*)OLE2T(bstr),lstrlen(OLE2T(bstr)));
}
return S_OK;
}
SaveToFile(fd.m_szFileName,(BYTE*)OLE2T(bstr),lstrlen(OLE2T(bstr)));
return S_OK;
}
}
else{
//////////////////////
int hr;
IHTMLWindow2* pWindow2 = NULL;
IHTMLWindow2* pFrameWindow2 = NULL;
IHTMLDocument2* pFrameDoc = NULL;
IHTMLFramesCollection2* pFrameColl = NULL;
long cFrames; hr = pDocument->get_parentWindow(&pWindow2);
if(SUCCEEDED(hr) && pWindow2){
pWindow2->get_frames(&pFrameColl);
if (SUCCEEDED(hr = pFrameColl->get_length( &cFrames )))
{
for ( int i=0; i < cFrames ; i++ )
{
VARIANT vIndex;
vIndex.vt = VT_UINT;
vIndex.lVal = i;
VARIANT var2 = { 0 };
LPDISPATCH pDisp;
VARIANT frame;
if (SUCCEEDED(hr = pFrameColl->item( &vIndex, &frame ))){
hr = frame.pdispVal->QueryInterface(IID_IHTMLWindow2, (void**)&pFrameWindow2);
pFrameWindow2->Release ();
hr = pFrameWindow2->get_document(&pFrameDoc);
if(pFrameDoc!=NULL&&SUCCEEDED(hr))
{
CComPtr<IHTMLSelectionObject>pSelectionObj;
hr=pFrameDoc->get_selection(&pSelectionObj);
if(SUCCEEDED(hr)){
hr=pSelectionObj->createRange(&pDisp );
CComQIPtr<IHTMLTxtRange> pTextRng;
pTextRng=pDisp;
pDisp->Release();
CComBSTR bstr;
pTextRng->get_text(&bstr);
if(bstr.Length ()!=0){
CFileDialog fd(FALSE,_T("*.Txt"),"SelectText.txt",NULL,_T("Text Files(*.txt)\0*.txt\0"),GetActiveWindow());
if(fd.DoModal ()==IDOK){
USES_CONVERSION;
if(IsFileExist(fd.m_szFileName)){
int nYESNO=MessageBox(NULL,"File Existed, Ovewrite it?","Infomation",MB_YESNO|MB_ICONINFORMATION);
if(nYESNO==IDYES)SaveToFile(fd.m_szFileName,(BYTE*)OLE2T(bstr),lstrlen(OLE2T(bstr)));
return S_OK;
}
SaveToFile(fd.m_szFileName,(BYTE*)OLE2T(bstr),lstrlen(OLE2T(bstr)));
return S_OK;
}
}
}
}
}
}
}
}
}
hr=browser->ExecWB(OLECMDID_SAVEAS,
OLECMDEXECOPT_PROMPTUSER, NULL, NULL);
}
}}
或者使用下面的简单脚本:
<SCRIPT LANGUAGE="JavaScript" defer>
var browserwin = external.menuArguments;
var htmldoc = browserwin.document;htmldoc.execCommand("SaveAs",1);</SCRIPT>
但是你自己的组件和程序将无法得到响应