关于WebBrowser控制新窗口[_blanck]问题解决总结

当页面为新窗口弹出时,下面代码分别演示如何在新建form中加载页面以及当前form的web控件加载form。
SHDocVw微软的一个系统文件,文件路径:C:\WINDOWS\system32\shdocvw.dll。
使用要引用这个dll


1、新建form,这个大多数人都应该知道。用newwindow2就可以了,不过vs2005的web控件是ms封装过的,需要注意一下。 


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).NewWindow2 += new SHDocVw.DWebBrowserEvents2_NewWindow2EventHandler(Form1_NewWindow2); 
 
 
        } 
        private void button1_Click(object sender, EventArgs e) 
        { 
            this.webBrowser1.Navigate("www.google.cn"); 
        } 
 
 
        void Form1_NewWindow2(ref object ppDisp, ref bool Cancel) 
        { 
            Form1 frm = new Form1(); 
            ppDisp = frm.webBrowser1.ActiveXInstance; 
            frm.Show(); 
        }        
    } 


2、在当前窗体的web控件中直接加载,这个需要用到NewWindow3 事件。 


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"); 
        }   
    } 

3、用 codeproject. com的WebBrowser: www.codeproject.com/csharp/ExtendedWebBrowser.asp
找找看,不要直接使用WebBrowser,得使用比WebBrowser低级一点的:COM组件 Microsoft Web 浏览器

4、新窗口打开的连接用自己定义的窗体打开

private void webBrowserContent_NewWindow(object sender, CancelEventArgs e)
  {
  ContentPage cp = new ContentPage();//新建一个窗体来打开
  cp.Show();
  cp.ActiveUrl = this.webBrowserContent.StatusText;//新建窗体的一个自定义属性值,来设置url,具体该怎么设置LZ自己灵活处理,这只是我的用法
  e.Cancel = true;
  }

5、解决点击webbrowser里面的链接会在本地IE中显示新网页的NewWindow事件代码(站内连接)
private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
        {
            e.Cancel = true;
            if (webBrowser1.Document.ActiveElement != null)
            {
                webBrowser1.Navigate(webBrowser1.Document.ActiveElement.GetAttribute("href"));
                comboBox1.Text = webBrowser1.Document.ActiveElement.GetAttribute("href");
            }
        }

————————————————
版权声明:本文为CSDN博主「limfungsuen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/limfungsuen/article/details/6713817

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解决UE5.2 WebBrowser无法播放视频问题可以尝试以下几个方法。 首先,确保你的UE5.2版本已经安装了最新的视频插件和WebBrowser组件。有时旧版本的插件可能无法正常播放视频,更新到最新版本可能会修复这个问题。 其次,检查你的硬件加速设置。有时,WebBrowser无法播放视频是因为硬件加速没有启用或存在冲突。在UE5.2的设置中,可以找到WebBrowser组件的相关设置。尝试启用或禁用硬件加速选项,看看是否可以解决问题。 如果问题仍然存在,可以尝试手动设置视频播放器。为WebBrowser组件指定一个可用的视频播放器,可以增加视频播放的兼容性。你可以尝试使用WebBrowser组件的OpenExternalURL函数来打开外部的视频播放器,或者在WebBrowser中嵌入一个现有的视频播放器的链接。 另外,避免使用过时的或不受支持的视频格式。某些视频格式可能无法在WebBrowser中正常播放。当遇到播放问题时,可以尝试使用更常用的视频格式,如MP4或WebM,看看是否可以解决问题。 最后,检查视频资源的路径和权限。确保视频资源的路径是正确的,并且具有足够的权限来访问。如果视频资源在本地计算机上,确保文件是可读取的,并且没有被其他应用程序占用。 总而言之,解决UE5.2 WebBrowser无法播放视频问题可以通过更新插件、调整硬件加速设置、指定视频播放器、使用常用视频格式和检查资源路径等方法来尝试解决。如果问题仍然存在,建议查阅UE5.2的官方文档或寻求相关技术支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值