如何打造标签式IE浏览器 (共享源码)
电子科技大学软件学院03级02班 周银辉
1,看看效果
2,关于Browser控件
如果您用的IDE是VisualStudio 2005, 那么您会发现,上面有个WebBrowser控件,请 不要 使用该控件来开发这个浏览器(原因是它缺少了很多参数,将使您的工作在中途陷入困境)
请使用axWebBrowser控件。在VisualStudio的工具箱中,右击鼠标 -----> 选择项 -----> Com组件 -------> "Microsoft Web 浏览器", 然后该控件就被添加到工具箱了.
3,导航到指定网页
导航函数为Navigate(String),使用它打开指定的网页
4,“在新窗口中打开”
首次创建网页浏览器时,都会为这样一个问题而郁闷:当“在新窗口中打开”时,新弹出的页面将在您系统默认的浏览器中打开,而不是在你所编写的浏览器中。这也是为什么不使用VisualStudio2005的WebBrowser控件的原因之一。
注意到axWebBrowser控件的NewWindow2事件,参数DWebBrowserEvents2_NewWindow2Event e 有一个ppDisp字段(VisualStudio2005的WebBrowser控件没有该字段), 设置e.ppDisp = myBrowser.Application; 就可以了。其中myBrowser只的是您要在其中打开网页的那个axWebBorwser对象。
NewWindow3事件只支持XP sp2以后的版本。
5,“前进”与“后退”
它们分别对应控件的GoBack()和GoForward()函数。
但,如何判断但前可否前进或后退?(axWebBrowser控件没有WebBrowser控件的CanGoBack与CanGoForward属性)。
注意到,axWebBrowser控件的CommandStateChange事件,参数DWebBrowserEvents2_CommandStateChangeEvent e有两个字段e.command和e.enable。 e.command: 值为1时针对前进按钮,值为2时针对后退按钮;e.enable:表明所针对的按钮当前是否可用。您可以根据此来启用或停用“前进”“后退”按钮。
6,“页面另存为”,“打印”,“打印预览”,“查找”等
它们对应axWebBrowser的同一个函数ExecWB( ) ,只是传入的参数不同而已。
7,“Internet选项”,“参看源文件”
在这之前,您应该添加对“msHtml.dll”的引用,添加引用-----> Com ---->"microsoft HTML object library"
然后定义定义 IOleCommandTarget 接口:
public interface IOleCommandTarget
{
void QueryStatus(ref Guid pguidCmdGroup, UInt32 cCmds,
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] OLECMD[] prgCmds, ref OLECMDTEXT CmdText);
void Exec(ref Guid pguidCmdGroup, uint nCmdId, uint nCmdExecOpt, ref object pvaIn, ref object pvaOut);
}
并定义一个函数来取得axWebBrowser对象的当前文档(mshtml.HTMLDocument对象):
/// 获取当前的HtmlDocument对象
/// </summary>
/// <returns></returns>
private mshtml.HTMLDocument GetCurrentHtmlDocument()
{
mshtml.HTMLDocument doc = null;
AxWebBrowser browser = this.GetCurrentBrowser();
if (browser != null)
{
doc = browser.Document as mshtml.HTMLDocument;
}
return doc;
}
注意mshtml.HTMLDocument别忘记加mshtml限定,否则会与System.Windows.Forms.HTMLDocment产生歧义。
以及一个枚举:
{
Find = 1,
ViewSource,
Options
}
然后我们的查找函数的函数体就可以这样写了:
mshtml.HTMLDocument doc = this.GetCurrentHtmlDocument();
if (doc != null)
{
IOleCommandTarget cmdTarget = doc as IOleCommandTarget;
Object o = new object();
try
{
cmdTarget.Exec(ref cmdGuid, (uint)MiscCommandTarget.Find,
(uint)SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, ref o, ref o);
}
catch
{
}
}
8,“收藏夹”
“收藏夹”,没有必要去调用API,您完全可以读取“C:\Documents and Settings\UserName\Favorites”下的文件夹和文件来打造您自己的个性收藏夹
收藏夹路径:string path = Environment.GetFolderPath(Environment.SpecialFolder.Favorites);
收藏夹文件,也就是收藏夹目录下的那些快捷方式,其后缀名为“.url”,虽然您在操纵系统中中看不到其后缀。其实际为一个纯文本文件,将它拖到记事本中,可以看到其内容,比如:
[InternetShortcut]
URL=http://zhouyinhui.cnblogs.com/
Modified=
IconFile=
IconIndex=0
有了这些知识,您完全可以任意操纵“收藏夹”了。
另外,如果您希望当收藏夹中文件或文件夹有任何改动时,你的程序都能自动发现,并做出相应反应,那么请注意一个叫做“FileSystemWatcher”的控件。
--------------------------------------------
源代码下载http://files.cnblogs.com/zhouyinhui/Surfer.rar
另外,如果您有ie编程方面的电子书,望能e_mail给我,谢谢!
转载于:https://www.cnblogs.com/zhouyinhui/archive/2006/10/12/527705.html
如何打造标签式IE浏览器 (共享源码)相关推荐
- 仿快图系统自带图片浏览器应用源码项目
仿快图系统自带图片浏览器应用源码,最近在做一个微博i动态模块,需要查看他人相册照片或者微博内容图片等.看到QQ空间那个效果不错,尝试了不少方法来实现,均不是怎么理想.最初是想通过自定义GroupVie ...
- webstack响应式网站导航html源码kyuan 本地静态化版
介绍: webstack响应式网站导航html源码 安装方法:直接上传 一言.和风天气的api建议大家自己注册换成自己的,每个注册的人有每日免费使用次数, 自带的一起用可能最后都显示不出来了. 以上提 ...
- WPF如何实现一款类似360安全卫士界面的程序?(共享源码!)
原文:WPF如何实现一款类似360安全卫士界面的程序?(共享源码!) 以前学习Windows Form编程的时候,总感觉自己做的界面很丑,看到360安全卫士.迅雷等软件的UI设计都非常美观,心里总是憧 ...
- html5+css3做的响应式企业网站前端源码
大家好,今天给大家介绍一款,html5+css3做的响应式企业网站前端源码 (图1).送给大家哦,获取方式在本文末尾. 图1 首页banner幻灯片切换特效(图2) 图2 首页布局简约合理(图3) 图 ...
- 20款响应式bootstrap后台模板源码下载
绿色清新的bootstrap响应式国外后台管理网站模板 蓝色简洁的响应式手机端云后台管理系统模板 扁平的html5 bootstrap手机后台管理模板源码下载 win8扁平风格响应式后台管理系统模板下 ...
- linux源码共享,Android之高仿飞鸽传书热点创建与共享源码
这两天,无意中看到飞鸽传书这个小东东,然后又突然对他的wifi热点创建与共享比较感兴趣,于是乎把他的APK给反编译了,很蛋疼的还原了一下他的这一小模块代码,感觉效果差不多,所以跟大家分享一下,下面我们 ...
- Python语言打造智能语音助手——附完整源码
Python语言打造智能语音助手--附完整源码 随着智能家居.智能办公等领域的逐渐兴起,实现语音控制与交互已成为了一种趋势.而Python语言是一门极具魅力的编程语言,其强大的库.简洁的语法以及易于学 ...
- 响应式茶叶类网站源码 HTML5茶叶茶艺茶文化养生茶网站织梦模板
介绍 响应式茶叶类网站源码采用织梦最新内核开发的模板,这款模板使用范围极广,不仅仅局限于一类型的企业,你只需要把图片和产品内容换成你的即可,颜色都可以修改,改完让你耳目一新的感觉!布局规整,利于用户体 ...
- 找一个网页,用浏览器查看源码并复制,然后尝试解析一下HTML,输出Python官网发布的会议时间、名称和地点——python学习笔记
1. 题目: 找一个网页,例如https://www.python.org/events/python-events/,用浏览器查看源码并复制,然后尝试解析一下HTML,输出Python官网发布的会议 ...
最新文章
- 7种不同的使用AI聊天机器人的方式
- Spring集成Shiro框架实战
- HDU 4505 小Q系列故事——电梯里的爱情
- 【Linux高级驱动】如何分析并移植网卡驱动
- 【C++】利用Visual Studio 2008编写C++,Visual Studio 2008的基本使用
- 12.1 Bootstrap介绍
- Eclipse使用Android2.3和3.0的SDK
- 听说容器正在吃掉整个软件世界?
- [APIO2018] New Home 新家(线段树,二分答案,离散化)
- 【区块链Go语言实现】Part 1:区块链基本原型
- 计算机网络学习笔记(3. 计算机网络结构)
- Java、SQL 十年混战史:Oracle 告 Google、“窃”IBM 往事
- Children’s Queue
- 计算机单机管理软件,小财迷电脑收银系统(收银记账软件) 单机版
- WordPress简约mkBlog博客主题模板v2.1
- PCB天线和陶瓷天线
- a113 智能音箱芯片方案_主流智能音箱全拆解,内部分毫必见
- Picasso入门教程(十二)Cache Indicators,Logging Stats
- 【MAVEN】maven仓库搜索功能
- 2021 非常火的 11 个微前端框架