关于IE编程的巨难问题

时间:2022-08-01 05:46:30
IE有一个“另成为”的功能,它可以把本地的cache中的网页保存成本地的页面,而不需要去下载,我想实现的功能就是在IE的快捷菜单中加一项(就像NetAnts),点击后模仿“另存为”的功能,将页面保存到我自己的数据库中去,但是我不要那个保存对话框,只需要保存进度条,其中参数由程序设定

我只需要知道如何实现程序设定参数来保存页面的功能

寻求高手解答,这是困扰我已久的问题

31 个解决方案

#1


Sorry
帮人up
http://www.csdn.net/Expert/topic/496/496222.shtm 
打扰了

#2


我也想知道呀,我现在也是IE编程.也遇到了很多困难,麻烦你老兄知道后,告诉我一声,谢谢

#3


是啊,你做个控件吧
大家都分享一下

#4


呼唤高手!!!!

#5


给你推

#6


石沉大海

#7


到微软的网站上,找些IE的API,我现在只知道有限的几个。

#8


你说的IE的快捷键菜单是哪个?

#9


MSDN里的资料,SAVE方面的好像没有,GZ.

InternetExplorer Object

--------------------------------------------------------------------------------

Description

The InternetExplorer object controls a remote instance of the Internet Explorer application through OLE Automation. 


Properties

AddressBar, Application, Busy, Container, Document, FullName, FullScreen, Height, HWND, Left, LocationName, LocationURL, MenuBar, Name, Offline, Parent, Path, ReadyState, RegisterAsBrowser, RegisterAsDropTarget, Resizable, Silent, StatusBar, StatusText, TheaterMode, ToolBar, Top, TopLevelContainer, Type, Visible, Width 


Methods

ClientToWindow, ExecWB, GetProperty, GoBack, GoForward, GoHome, GoSearch, Navigate, Navigate2, PutProperty, QueryStatusWB, Quit, Refresh, Refresh2, ShowBrowserBar, Stop 


Events

BeforeNavigate2, CommandStateChange, DocumentComplete, DownloadBegin, DownloadComplete, NavigateComplete2, NewWindow2, OnFullScreen, OnMenuBar, OnQuit, OnStatusBar, OnTheaterMode, OnToolBar, OnVisible, ProgressChange, PropertyChange, StatusTextChange, TitleChange 



--------------------------------------------------------------------------------

#10


可以读出当前网页的临时文件
然后自己存盘
GetUrlCacheEntryInfo得到文件名
然后自己copy

#11


ExecWB+IDM_SAVEAS,qinzm的方法很好啊,实现简单

#12


能不能说具体点,谢谢
如果有源码请发到我邮箱里 drinkalone@163.com

#13


http://www.csdn.net/expert/topic/492/492919.shtm

#14


IOleCommandTarget* pCmdTarg; 
hr = pHTMLDocument2->QueryInterface(IID_IOleCommandTarget, (void**)&pCmdTarg); 
if( SUCCEEDED(hr) ) 

hr = pCmdTarg->Exec( &CGID_MSHTML, IDM_SAVEAS, OLECMDEXECOPT_DONTPROMPTUSER, &v, NULL); 
pCmdTarg->Release(); 


#15


 to: qinzm(不归人)
你的方法我没有试,估计能找到临时文件,但是只有HTML代码,不是我想要保存为“Web 页 全部”的这种效果

 to:  masterz()
你这种方法是弹出一个保存对话框,但是我的关键问题是不要那个对话框,直接用程序来保存页面

#16


这有何难,你会取得浏览器的Document接口吗?如果你取得了Document的接口,Document.innerHTML就是你要的内容。

#17


做了一个类是功能的,但还没有添加到数据库中的部分,需要的话把源码给你。

#18


其实不需要用到IHTMLDocument2接口。

#19


to: RedFire(丹焰) 
  这个我会,但是像图片、Frame等都没有,我要的是“另存为”这种效果,而不是取HTML代码,“另存为”是把网页存成为一个整体,图片、帧等等都应该有,而不是打开一个页面到处都缺图片或者提示页面不存在。

to:kimryo(轻*轻*前*轻*重)
  把代码发给我,谢了
drinkalone@163.com

#20


不好意思,没看全,可以做到保存HTML代码,没有对话框直接保存,还没有保存图像功能。

#21


有朋友说可以在保存对话框上做文章,让对话框不显示,然后给保存按钮发一个消息,这怎么做?

#22


给我发一个把,我对这个也感兴趣。谢谢了。
eric_chenwei@163.com

#23


不对不对,不是在对话框上做手脚,可以绕过任何对话框直接保存。

#24


IE是个大黑洞,黑进去以后只有死机,再也不能出来~~~~~~~

#25


那怎么办??
HELP!

#26


对啊
wwtmw@163.com
谢谢

#27


关注

#28


@_@

#29


可以用目标另存为的功能

#30


这个在microsoft.public.inetsdk.programming.mshtml_hosting已经讨论过很多次了
1. OLECMDEXECOPT_DONTPROMPTUSER经广大劳动人民实践证明没有用 (你可以考虑自己从头写一个下载的了,其实就解析一下里面还需要get的element, 比如jpg,frame...)
2. 找个办法那个dialog一跳出来就sendmessage给他让他消失
3. 这个方法网上有人介绍过,但我没有试出来:
   1)自己创建一个空的html文件
   2)然后用iwebbrowser打开,开始编辑
   3) 保存
   4) 放到db里
4. 看看你能不能搞定这个调用:OLECMDID_ALLOWUILESSSAVEAS  (我试过,不知道怎么用,msdn里面是查不到的)


附表:
typedef enum {
    OLECMDID_OPEN = 1,
    OLECMDID_NEW = 2,
    OLECMDID_SAVE = 3,
    OLECMDID_SAVEAS = 4,
    OLECMDID_SAVECOPYAS = 5,
    OLECMDID_PRINT = 6,
    OLECMDID_PRINTPREVIEW = 7,
    OLECMDID_PAGESETUP = 8,
    OLECMDID_SPELL = 9,
    OLECMDID_PROPERTIES = 10,
    OLECMDID_CUT = 11,
    OLECMDID_COPY = 12,
    OLECMDID_PASTE = 13,
    OLECMDID_PASTESPECIAL = 14,
    OLECMDID_UNDO = 15,
    OLECMDID_REDO = 16,
    OLECMDID_SELECTALL = 17,
    OLECMDID_CLEARSELECTION = 18,
    OLECMDID_ZOOM = 19,
    OLECMDID_GETZOOMRANGE = 20,
    OLECMDID_UPDATECOMMANDS = 21,
    OLECMDID_REFRESH = 22,
    OLECMDID_STOP = 23,
    OLECMDID_HIDETOOLBARS = 24,
    OLECMDID_SETPROGRESSMAX = 25,
    OLECMDID_SETPROGRESSPOS = 26,
    OLECMDID_SETPROGRESSTEXT = 27,
    OLECMDID_SETTITLE = 28,
    OLECMDID_SETDOWNLOADSTATE = 29,
    OLECMDID_STOPDOWNLOAD = 30,
    OLECMDID_ONTOOLBARACTIVATED = 31,
    OLECMDID_FIND = 32,
    OLECMDID_DELETE = 33,
    OLECMDID_HTTPEQUIV = 34,
    OLECMDID_HTTPEQUIV_DONE = 35,
    OLECMDID_ENABLE_INTERACTION = 36,
    OLECMDID_ONUNLOAD = 37,
    OLECMDID_PROPERTYBAG2 = 38,
    OLECMDID_PREREFRESH = 39,
    OLECMDID_SHOWSCRIPTERROR = 40,
    OLECMDID_SHOWMESSAGE = 41,
    OLECMDID_SHOWFIND = 42,
    OLECMDID_SHOWPAGESETUP = 43,
    OLECMDID_SHOWPRINT = 44,
    OLECMDID_CLOSE = 45,
    OLECMDID_ALLOWUILESSSAVEAS = 46,
    OLECMDID_DONTDOWNLOADCSS = 47,
    OLECMDID_UPDATEPAGESTATUS = 48,
    OLECMDID_PRINT2 = 49,
    OLECMDID_PRINTPREVIEW2 = 50,
    OLECMDID_SETPRINTTEMPLATE = 51,
    OLECMDID_GETPRINTTEMPLATE = 52
} OLECMDID;

#31


建议:
把Mozilla的源码Down回家好好看看,还有一本书《Netscape 源码分析》(大概是这样),应该会有所帮助:)

#1


Sorry
帮人up
http://www.csdn.net/Expert/topic/496/496222.shtm 
打扰了

#2


我也想知道呀,我现在也是IE编程.也遇到了很多困难,麻烦你老兄知道后,告诉我一声,谢谢

#3


是啊,你做个控件吧
大家都分享一下

#4


呼唤高手!!!!

#5


给你推

#6


石沉大海

#7


到微软的网站上,找些IE的API,我现在只知道有限的几个。

#8


你说的IE的快捷键菜单是哪个?

#9


MSDN里的资料,SAVE方面的好像没有,GZ.

InternetExplorer Object

--------------------------------------------------------------------------------

Description

The InternetExplorer object controls a remote instance of the Internet Explorer application through OLE Automation. 


Properties

AddressBar, Application, Busy, Container, Document, FullName, FullScreen, Height, HWND, Left, LocationName, LocationURL, MenuBar, Name, Offline, Parent, Path, ReadyState, RegisterAsBrowser, RegisterAsDropTarget, Resizable, Silent, StatusBar, StatusText, TheaterMode, ToolBar, Top, TopLevelContainer, Type, Visible, Width 


Methods

ClientToWindow, ExecWB, GetProperty, GoBack, GoForward, GoHome, GoSearch, Navigate, Navigate2, PutProperty, QueryStatusWB, Quit, Refresh, Refresh2, ShowBrowserBar, Stop 


Events

BeforeNavigate2, CommandStateChange, DocumentComplete, DownloadBegin, DownloadComplete, NavigateComplete2, NewWindow2, OnFullScreen, OnMenuBar, OnQuit, OnStatusBar, OnTheaterMode, OnToolBar, OnVisible, ProgressChange, PropertyChange, StatusTextChange, TitleChange 



--------------------------------------------------------------------------------

#10


可以读出当前网页的临时文件
然后自己存盘
GetUrlCacheEntryInfo得到文件名
然后自己copy

#11


ExecWB+IDM_SAVEAS,qinzm的方法很好啊,实现简单

#12


能不能说具体点,谢谢
如果有源码请发到我邮箱里 drinkalone@163.com

#13


http://www.csdn.net/expert/topic/492/492919.shtm

#14


IOleCommandTarget* pCmdTarg; 
hr = pHTMLDocument2->QueryInterface(IID_IOleCommandTarget, (void**)&pCmdTarg); 
if( SUCCEEDED(hr) ) 

hr = pCmdTarg->Exec( &CGID_MSHTML, IDM_SAVEAS, OLECMDEXECOPT_DONTPROMPTUSER, &v, NULL); 
pCmdTarg->Release(); 


#15


 to: qinzm(不归人)
你的方法我没有试,估计能找到临时文件,但是只有HTML代码,不是我想要保存为“Web 页 全部”的这种效果

 to:  masterz()
你这种方法是弹出一个保存对话框,但是我的关键问题是不要那个对话框,直接用程序来保存页面

#16


这有何难,你会取得浏览器的Document接口吗?如果你取得了Document的接口,Document.innerHTML就是你要的内容。

#17


做了一个类是功能的,但还没有添加到数据库中的部分,需要的话把源码给你。

#18


其实不需要用到IHTMLDocument2接口。

#19


to: RedFire(丹焰) 
  这个我会,但是像图片、Frame等都没有,我要的是“另存为”这种效果,而不是取HTML代码,“另存为”是把网页存成为一个整体,图片、帧等等都应该有,而不是打开一个页面到处都缺图片或者提示页面不存在。

to:kimryo(轻*轻*前*轻*重)
  把代码发给我,谢了
drinkalone@163.com

#20


不好意思,没看全,可以做到保存HTML代码,没有对话框直接保存,还没有保存图像功能。

#21


有朋友说可以在保存对话框上做文章,让对话框不显示,然后给保存按钮发一个消息,这怎么做?

#22


给我发一个把,我对这个也感兴趣。谢谢了。
eric_chenwei@163.com

#23


不对不对,不是在对话框上做手脚,可以绕过任何对话框直接保存。

#24


IE是个大黑洞,黑进去以后只有死机,再也不能出来~~~~~~~

#25


那怎么办??
HELP!

#26


对啊
wwtmw@163.com
谢谢

#27


关注

#28


@_@

#29


可以用目标另存为的功能

#30


这个在microsoft.public.inetsdk.programming.mshtml_hosting已经讨论过很多次了
1. OLECMDEXECOPT_DONTPROMPTUSER经广大劳动人民实践证明没有用 (你可以考虑自己从头写一个下载的了,其实就解析一下里面还需要get的element, 比如jpg,frame...)
2. 找个办法那个dialog一跳出来就sendmessage给他让他消失
3. 这个方法网上有人介绍过,但我没有试出来:
   1)自己创建一个空的html文件
   2)然后用iwebbrowser打开,开始编辑
   3) 保存
   4) 放到db里
4. 看看你能不能搞定这个调用:OLECMDID_ALLOWUILESSSAVEAS  (我试过,不知道怎么用,msdn里面是查不到的)


附表:
typedef enum {
    OLECMDID_OPEN = 1,
    OLECMDID_NEW = 2,
    OLECMDID_SAVE = 3,
    OLECMDID_SAVEAS = 4,
    OLECMDID_SAVECOPYAS = 5,
    OLECMDID_PRINT = 6,
    OLECMDID_PRINTPREVIEW = 7,
    OLECMDID_PAGESETUP = 8,
    OLECMDID_SPELL = 9,
    OLECMDID_PROPERTIES = 10,
    OLECMDID_CUT = 11,
    OLECMDID_COPY = 12,
    OLECMDID_PASTE = 13,
    OLECMDID_PASTESPECIAL = 14,
    OLECMDID_UNDO = 15,
    OLECMDID_REDO = 16,
    OLECMDID_SELECTALL = 17,
    OLECMDID_CLEARSELECTION = 18,
    OLECMDID_ZOOM = 19,
    OLECMDID_GETZOOMRANGE = 20,
    OLECMDID_UPDATECOMMANDS = 21,
    OLECMDID_REFRESH = 22,
    OLECMDID_STOP = 23,
    OLECMDID_HIDETOOLBARS = 24,
    OLECMDID_SETPROGRESSMAX = 25,
    OLECMDID_SETPROGRESSPOS = 26,
    OLECMDID_SETPROGRESSTEXT = 27,
    OLECMDID_SETTITLE = 28,
    OLECMDID_SETDOWNLOADSTATE = 29,
    OLECMDID_STOPDOWNLOAD = 30,
    OLECMDID_ONTOOLBARACTIVATED = 31,
    OLECMDID_FIND = 32,
    OLECMDID_DELETE = 33,
    OLECMDID_HTTPEQUIV = 34,
    OLECMDID_HTTPEQUIV_DONE = 35,
    OLECMDID_ENABLE_INTERACTION = 36,
    OLECMDID_ONUNLOAD = 37,
    OLECMDID_PROPERTYBAG2 = 38,
    OLECMDID_PREREFRESH = 39,
    OLECMDID_SHOWSCRIPTERROR = 40,
    OLECMDID_SHOWMESSAGE = 41,
    OLECMDID_SHOWFIND = 42,
    OLECMDID_SHOWPAGESETUP = 43,
    OLECMDID_SHOWPRINT = 44,
    OLECMDID_CLOSE = 45,
    OLECMDID_ALLOWUILESSSAVEAS = 46,
    OLECMDID_DONTDOWNLOADCSS = 47,
    OLECMDID_UPDATEPAGESTATUS = 48,
    OLECMDID_PRINT2 = 49,
    OLECMDID_PRINTPREVIEW2 = 50,
    OLECMDID_SETPRINTTEMPLATE = 51,
    OLECMDID_GETPRINTTEMPLATE = 52
} OLECMDID;

#31


建议:
把Mozilla的源码Down回家好好看看,还有一本书《Netscape 源码分析》(大概是这样),应该会有所帮助:)