您的位置:首页 > 编程语言 > C#

C# WebBrowser 屏蔽alert,confirm的方法

2015-12-28 15:35 423 查看
WebBrowser屏蔽alert是用重定义alert,confirm实现的。比较简单。代码如下

添加 com 引用 microsoft html object library

using mshtml;

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)

{

IHTMLWindow2 win = (IHTMLWindow2)webBrowser1.Document.Window.DomWindow;

string s = @"function confirm() {";

s += @"return true;";

s += @"}";

s += @"function alert() {}";

win.execScript(s, "javascript");

}

我的不是这样弄的,虽然代码一样,但是我是在执行具体任务的时候,才会写入这个,然后执行这段代码+我自己的点击代码。

刚才在网上找了下,还有另一种治本的方法呵,高人到处都是。下面是代码,是继承的webBrowser然后屏弊了ShowMessage

using System;

using System.Collections.Generic;

using System.Text;

using System.Windows.Forms;

using System.Runtime.CompilerServices;

using System.Runtime.InteropServices;

namespace Test

{

public class MyWebBrowser : System.Windows.Forms.WebBrowser

{

#region ExtendedWebBrowserSite

class ExtendedWebBrowserSite : WebBrowser.WebBrowserSite, UnsafeNativeMethods.IDocHostShowUI

{

public ExtendedWebBrowserSite(WebBrowser host)

: base(host)

{

}

void UnsafeNativeMethods.IDocHostShowUI.ShowMessage(ref UnsafeNativeMethods._RemotableHandle hwnd, string lpstrText, string lpstrCaption, uint dwType, string lpstrHelpFile, uint dwHelpContext, out int plResult)

{

plResult = 0;

//TODO:自定义

}

void UnsafeNativeMethods.IDocHostShowUI.ShowHelp(ref UnsafeNativeMethods._RemotableHandle hwnd, string pszHelpFile, uint uCommand, uint dwData, UnsafeNativeMethods.tagPOINT ptMouse, object pDispatchObjectHit)

{

//TODO:自定义

}

}

protected override WebBrowserSiteBase CreateWebBrowserSiteBase()

{

return new ExtendedWebBrowserSite(this);

}

#endregion

}

public class UnsafeNativeMethods

{

#region IDocHostShowUI

[StructLayout(LayoutKind.Explicit, Pack = 4)]

public struct __MIDL_IWinTypes_0009

{

// Fields

[FieldOffset(0)]

public int hInproc;

[FieldOffset(0)]

public int hRemote;

}

[StructLayout(LayoutKind.Sequential, Pack = 4)]

public struct _RemotableHandle

{

public int fContext;

public __MIDL_IWinTypes_0009 u;

}

[StructLayout(LayoutKind.Sequential, Pack = 4)]

public struct tagPOINT

{

public int x;

public int y;

}

[ComImport, Guid("C4D244B0-D43E-11CF-893B-00AA00BDCE1A"), InterfaceType((short)1)]

public interface IDocHostShowUI

{

[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]

void ShowMessage([In, ComAliasName("ExtendedWebBrowser2.UnsafeNativeMethods.wireHWND")] ref _RemotableHandle hwnd, [In, MarshalAs(UnmanagedType.LPWStr)] string lpstrText, [In, MarshalAs(UnmanagedType.LPWStr)] string lpstrCaption, [In] uint dwType, [In, MarshalAs(UnmanagedType.LPWStr)]
string lpstrHelpFile, [In] uint dwHelpContext, [ComAliasName("ExtendedWebBrowser2.UnsafeNativeMethods.LONG_PTR")] out int plResult);

[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]

void ShowHelp([In, ComAliasName("ExtendedWebBrowser2.UnsafeNativeMethods.wireHWND")] ref _RemotableHandle hwnd, [In, MarshalAs(UnmanagedType.LPWStr)] string pszHelpFile, [In] uint uCommand, [In] uint dwData, [In] tagPOINT ptMouse, [Out, MarshalAs(UnmanagedType.IDispatch)]
object pDispatchObjectHit);

}

#endregion

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: