使用net2005的webBrowser时,如何让页面上的连接打开的网页就在本form中打开?

wangsiyi 2007-11-22 02:05:18
本人初学者,高分急问
如题,原来在ie浏览器中的网页上的连接点击后会打开一个新的窗口显示页面,现在把该网页做到form里的webBrowser里,让页面上的连接打开的网页就在本form中打开,而不是新创建一个带有webBrowser的form,可不可以实现,请高手帮帮我啊,万分感谢
...全文
246 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangsiyi 2007-11-23
  • 打赏
  • 举报
回复
OK,我自己解决了,还是很感谢jinjazz的帮助和提示,下面我要研究的就是如何模拟鼠标点击自动打开目标连接了
wangsiyi 2007-11-23
  • 打赏
  • 举报
回复
可我的程序必须这样才能进行下去,我的任务是自动登陆该网站,读取里面的数据写入数据库,如果弹出网页搞不定,就不好进行下一步,请问如何根据网址来判断,能给个例子吗?我看有人说可以通过过滤网站上的windows.open来使打开的网页没有弹出页面,可具体不知道该怎么操作,请帮帮忙,十分感谢
jinjazz 2007-11-22
  • 打赏
  • 举报
回复
只能根据网址来判断了,没有别的办法,所以你老用一个窗体打开是有问题的
wangsiyi 2007-11-22
  • 打赏
  • 举报
回复
谢谢你,可是我要用的网站类似新浪的网站,有一个弹出广告,等webBrowser里的页面完全打开后就成广告那页了,请问该怎么屏蔽掉广告页,或者怎么解决呢?
jinjazz 2007-11-22
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
namespace WindowsApplication24
{
public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
this.webBrowser1.Navigate("about:blank");
(this.webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).NewWindow3 += new SHDocVw.DWebBrowserEvents2_NewWindow3EventHandler(Form1_NewWindow3);

}

void Form1_NewWindow3(ref object ppDisp, ref bool Cancel, uint dwFlags, string bstrUrlContext, string bstrUrl)
{
Cancel = true;
this.webBrowser1.Navigate(bstrUrl);
}
private void button1_Click(object sender, EventArgs e)
{
this.webBrowser1.Navigate("www.google.cn");
}




}
}
4 浏览器网络编程(共两周) 4.1 浏览器工作原理(老师讲解1学,学生理解1学) 浏览器工作原理如图4-1所示。 图4-1 浏览器工作原理 (1) 浏览器分析超链指向页面的 URL。 (2) 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址。 (3) 域名系统 DNS 解析出清华大学服务器的 IP 地址。 (4) 浏览器与服务器建立 TCP 连接 (5) 浏览器发出取文件命令: GET /chn/yxsz/index.htm。 (6) 服务器 给出响应,把文件 index.htm 发给浏览器。 (7) TCP 连接释放。 (8) 浏览器显示“清华大学院系设置”文件 index.htm 的所有文本 4.2 浏览器功能结构(老师讲解1学,学生理解1学) 浏览器程序功能结构如图4-2所示。 图4-2 浏览器功能结构 1) 浏览器有一组客户、一组解释程序,以及管理这些客户和解释程序的控制程序。 2) 控制程序是其的核心部件,它解释鼠标的点击和键盘的输入,并调用有关的组件来执行用户指定的操作。 3) 例如,当用户用鼠标点击一个超链的起点,控制程序就调用一个客户从所需文档所在的远地服务器上取回该文档,并调用解释程序向用户显示该文档 4) HTML 解释程序是必不可少的,而其他的解释程序则是可选的。 5) 解释程序把 HTML 规格转换为适合用户显示硬件的命令来处理版面的细节。 6) 许多浏览器还包含 FTP 客户,用来获取文件传送服务。 7) 一些浏览器也包含电子邮件客户,使浏览器能够发送和接收电子邮件 8) 浏览器将它取回的每一个页面副本都放入本地磁盘的缓存。 9) 当用户用鼠标点击某个选项,浏览器首先检查磁盘的缓存。若缓存保存了该项,浏览器就直接从缓存得到该项副本而不必从网络获取,这样就明显地改善浏览器的运行特性。 10) 但缓存要占用磁盘大量的空间,而浏览器性能的改善只有在用户再次查看缓存页面才有帮助。 11) 许多浏览器允许用户调整缓存策略。 4.3 浏览器设计(老师讲解2学,学生设计2学) (1)浏览器功能设计 浏览器功能设计主要确定设计好的浏览器需要具备哪些功能,以及这些功能是以什么方式进行实现,这个步骤相当于软件设计的“需求分析”,其必须保证基本功能的具备,即浏览器必须能够浏览Web页面。 (2)浏览器界面设计 浏览器界面设计主要确定浏览器的页面布局,设定浏览器窗口上设置哪些功能菜单项、设置哪些功能按钮、设置哪些状态栏,它们各自的位置如何、属性如何、对应的变量如何等等。 (3)浏览器代码设计 浏览器代码设计主要是确定对上述的设计的功能在代码上怎样实现,包括选用的程序语言和编程平台选择、程序代码的编写、程序代码的调试、程序功能的测试等等。 4.4 浏览器编程设计平台(老师讲解2学,学生理解4学) (1)VS2005编程平台 (2)WebBrowser类及其使用 (3)一些浏览器程序的代码分析 4.5 浏览器开发步骤(8天) (1)熟悉VS2005平台,建立项目(半天) 打开VS2005选择“创建项目”,进入“新建项目”对话框,如图4-1所示。 图4-1 “新建项目”对话框 在“新建项目”对话框的项目类型窗口“Visual C#”作为项目开发语言,在模板窗口“Windows 应用程序”作为项目开发模板,在“名称”、“位置”编辑框输入自己设定的项目名字和项目存储位置,本讲义使用“CSharp浏览器”作为项目名称,如图4-2所示。 图4-2 输入新建项目的属性 完成输入内容后,单击“确定”按钮,进入项目VC#开发窗口“Form.cs[设计]”,如图4-3所示。 图4-3 VC#开发窗口“Form.cs[设计]” (2)界面设计(1天) ○1设计菜单栏如图4-4所示。(半天) 图4-4 设计菜单栏 设计“文件”菜单如4-5所示。 图4-5 设计“文件”菜单 设计“编辑”菜单如图4-6所示。 图4-6 设计“编辑”菜单 设计“查看”菜单如图4-7所示。 图4-7 设计“查看”菜单 设计“收藏”菜单如图4-8所示。 图4-8 设计“收藏”菜单 设计“工具”菜单如图4-9所示。 图4-9 设计“工具”菜单 ○2设计工具栏、用户区和状态栏如图4-10所示(半天) 图4-10 工具栏和状态栏 (3)功能代码编辑 ○1初始化代码(半天) 双击“Form”设计页面进入代码编写页面,如图4-11所示。 图4-11 代码编写页面 初始化页面代码如下: ////////////////////////////////////////////////////////
(1) 这个控件叫INET控件 INET控件的几点使用 Inet控件支持HTTP与FTP两种通讯协议。利用这个控件可以完成许多功能。 我们通过例子来看看。 环境VB6+WINXP 打开VB6,新建工程 添加部件Microsoft Internet Transfer Controls. 在form添加2个按钮,2个文本框和Inet控件 代码如下: Option Explicit ''这段代码使用了GetHeader来返回页面信息,比较准确一些 ''可以得到文件最后修改日期,文件大小等等 ''用这个办法还可以判断一个文件是否存在 Private Sub Command1_Click() Dim a As String Dim str As String Dim RetCode As Long Inet1.OpenURL "http://localhost/xml/tt.htm" If Inet1.StillExecuting Then DoEvents End If ''可以看到所有的项目 MsgBox Inet1.GetHeader ''得到修改日期间是格林间,将它转换北京间 str = Inet1.GetHeader("Last-modified") str = Replace(Right(str, Len(str) - InStr(1, str, ",") - 1), "GMT", "") Text1.Text = CDate(Format(str, "yyyy/mm/dd hh:mm:ss")) MsgBox Inet1.GetHeader("content-length") RetCode = Val(Mid(Trim(Inet1.GetHeader), 10, 3)) Select Case RetCode Case 200 MsgBox "成功" Case 404 MsgBox "没有发现" Case Else MsgBox "Error" End Select End Sub ''这段代码简单的判断了是否与internet连接 ''如果连接,得到网页源码并且保存 Private Sub Command2_Click() Inet1.Cancel If Len(Inet1.OpenURL("http://localhost/xml\tt.htm")) <> 0 Then MsgBox "已经连接" Text2.Text = Inet1.OpenURL("http://localhost/xml\tt.htm") If Inet1.StillExecuting Then DoEvents End If ''保存到文件 Open App.Path & "\index.htm" For Output As #1 Print #1, Text2.Text Close #1 Else MsgBox "没有连接" End If End Sub. (2) '我最喜欢用这种方法 Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub Command1_Click() Dim WEBADDR As String WEBADDR = "http://www.baidu.com/" Call ShellExecute(hwnd, "Open", WEBADDR, "", App.Path, 3) End Sub '另两种方法 Private Sub Command1_Click() aa = "Explorer http://www.baidu.com/" Shell aa, vbNormalFocus End Sub '******************************* Private Sub Command1_Click() WebBrowser1.Navigate ("http://www.baidu.com/") End Sub

110,580

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧