axWebBrowser拦截网页Alter消息
2011-01-30 16:06
417 查看
Enums.cs
GeneralClasses.cs
OleInterfaces.cs
Structs.cs
Form1.cs
namespace WindowsFormsApplication1 { public enum tagOLECONTF { OLECONTF_EMBEDDINGS = 1, OLECONTF_LINKS = 2, OLECONTF_OTHERS = 4, OLECONTF_ONLYUSER = 8, OLECONTF_ONLYIFRUNNING = 16 } }
GeneralClasses.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WindowsFormsApplication1 { public sealed class Hresults { public const int NOERROR = 0; public const int S_OK = 0; public const int S_FALSE = 1; public const int E_PENDING = unchecked((int)0x8000000A); public const int E_HANDLE = unchecked((int)0x80070006); public const int E_NOTIMPL = unchecked((int)0x80004001); public const int E_NOINTERFACE = unchecked((int)0x80004002); //ArgumentNullException. NullReferenceException uses COR_E_NULLREFERENCE public const int E_POINTER = unchecked((int)0x80004003); public const int E_ABORT = unchecked((int)0x80004004); public const int E_FAIL = unchecked((int)0x80004005); public const int E_OUTOFMEMORY = unchecked((int)0x8007000E); public const int E_ACCESSDENIED = unchecked((int)0x80070005); public const int E_UNEXPECTED = unchecked((int)0x8000FFFF); public const int E_FLAGS = unchecked((int)0x1000); public const int E_INVALIDARG = unchecked((int)0x80070057); //Wininet public const int ERROR_SUCCESS = 0; public const int ERROR_FILE_NOT_FOUND = 2; public const int ERROR_ACCESS_DENIED = 5; public const int ERROR_INSUFFICIENT_BUFFER = 122; public const int ERROR_NO_MORE_ITEMS = 259; //Ole Errors public const int OLE_E_FIRST = unchecked((int)0x80040000); public const int OLE_E_LAST = unchecked((int)0x800400FF); public const int OLE_S_FIRST = unchecked((int)0x00040000); public const int OLE_S_LAST = unchecked((int)0x000400FF); //OLECMDERR_E_FIRST = 0x80040100 public const int OLECMDERR_E_FIRST = unchecked((int)(OLE_E_LAST + 1)); public const int OLECMDERR_E_NOTSUPPORTED = unchecked((int)(OLECMDERR_E_FIRST)); public const int OLECMDERR_E_DISABLED = unchecked((int)(OLECMDERR_E_FIRST + 1)); public const int OLECMDERR_E_NOHELP = unchecked((int)(OLECMDERR_E_FIRST + 2)); public const int OLECMDERR_E_CANCELED = unchecked((int)(OLECMDERR_E_FIRST + 3)); public const int OLECMDERR_E_UNKNOWNGROUP = unchecked((int)(OLECMDERR_E_FIRST + 4)); public const int OLEOBJ_E_NOVERBS = unchecked((int)0x80040180); public const int OLEOBJ_S_INVALIDVERB = unchecked((int)0x00040180); public const int OLEOBJ_S_CANNOT_DOVERB_NOW = unchecked((int)0x00040181); public const int OLEOBJ_S_INVALIDHWND = unchecked((int)0x00040182); public const int DV_E_LINDEX = unchecked((int)0x80040068); public const int OLE_E_OLEVERB = unchecked((int)0x80040000); public const int OLE_E_ADVF = unchecked((int)0x80040001); public const int OLE_E_ENUM_NOMORE = unchecked((int)0x80040002); public const int OLE_E_ADVISENOTSUPPORTED = unchecked((int)0x80040003); public const int OLE_E_NOCONNECTION = unchecked((int)0x80040004); public const int OLE_E_NOTRUNNING = unchecked((int)0x80040005); public const int OLE_E_NOCACHE = unchecked((int)0x80040006); public const int OLE_E_BLANK = unchecked((int)0x80040007); public const int OLE_E_CLASSDIFF = unchecked((int)0x80040008); public const int OLE_E_CANT_GETMONIKER = unchecked((int)0x80040009); public const int OLE_E_CANT_BINDTOSOURCE = unchecked((int)0x8004000A); public const int OLE_E_STATIC = unchecked((int)0x8004000B); public const int OLE_E_PROMPTSAVECANCELLED = unchecked((int)0x8004000C); public const int OLE_E_INVALIDRECT = unchecked((int)0x8004000D); public const int OLE_E_WRONGCOMPOBJ = unchecked((int)0x8004000E); public const int OLE_E_INVALIDHWND = unchecked((int)0x8004000F); public const int OLE_E_NOT_INPLACEACTIVE = unchecked((int)0x80040010); public const int OLE_E_CANTCONVERT = unchecked((int)0x80040011); public const int OLE_E_NOSTORAGE = unchecked((int)0x80040012); public const int RPC_E_RETRY = unchecked((int)0x80010109); } }
OleInterfaces.cs
using System; using System.IO; using System.ComponentModel; using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes; using System.Security; using System.Collections; using System.Text; using mshtml; namespace WindowsFormsApplication1 { #region IDocHostShowUI Interface //MIDL_INTERFACE("c4d244b0-d43e-11cf-893b-00aa00bdce1a") //IDocHostShowUI : public IUnknown //{ //public: // virtual HRESULT STDMETHODCALLTYPE ShowMessage( // /* [in] */ HWND hwnd, // /* [in] */ LPOLESTR lpstrText, // /* [in] */ LPOLESTR lpstrCaption, // /* [in] */ DWORD dwType, // /* [in] */ LPOLESTR lpstrHelpFile, // /* [in] */ DWORD dwHelpContext, // /* [out] */ LRESULT *plResult) = 0; // virtual HRESULT STDMETHODCALLTYPE ShowHelp( // /* [in] */ HWND hwnd, // /* [in] */ LPOLESTR pszHelpFile, // /* [in] */ UINT uCommand, // /* [in] */ DWORD dwData, // /* [in] */ POINT ptMouse, // /* [out] */ IDispatch *pDispatchObjectHit) = 0; //}; [ComImport, ComVisible(true)] [Guid("C4D244B0-D43E-11CF-893B-00AA00BDCE1A")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IDocHostShowUI { [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int ShowMessage( IntPtr hwnd, [MarshalAs(UnmanagedType.LPWStr)] string lpstrText, [MarshalAs(UnmanagedType.LPWStr)] string lpstrCaption, [MarshalAs(UnmanagedType.U4)] uint dwType, [MarshalAs(UnmanagedType.LPWStr)] string lpstrHelpFile, [MarshalAs(UnmanagedType.U4)] uint dwHelpContext, [In, Out] ref int lpResult); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int ShowHelp( IntPtr hwnd, [MarshalAs(UnmanagedType.LPWStr)] string pszHelpFile, [MarshalAs(UnmanagedType.U4)] uint uCommand, [MarshalAs(UnmanagedType.U4)] uint dwData, [In, MarshalAs(UnmanagedType.Struct)] tagPOINT ptMouse, [Out, MarshalAs(UnmanagedType.IDispatch)] object pDispatchObjectHit); } #endregion #region IOleClientSite Interface //MIDL_INTERFACE("00000118-0000-0000-C000-000000000046") //IOleClientSite : public IUnknown //{ //public: // virtual HRESULT STDMETHODCALLTYPE SaveObject( void) = 0; // virtual HRESULT STDMETHODCALLTYPE GetMoniker( // /* [in] */ DWORD dwAssign, // /* [in] */ DWORD dwWhichMoniker, // /* [out] */ IMoniker **ppmk) = 0; // virtual HRESULT STDMETHODCALLTYPE GetContainer( // /* [out] */ IOleContainer **ppContainer) = 0; // virtual HRESULT STDMETHODCALLTYPE ShowObject( void) = 0; // virtual HRESULT STDMETHODCALLTYPE OnShowWindow( // /* [in] */ BOOL fShow) = 0; // virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout( void) = 0; //}; [ComImport, ComVisible(true)] [Guid("00000118-0000-0000-C000-000000000046")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IOleClientSite { [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int SaveObject(); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetMoniker( [In, MarshalAs(UnmanagedType.U4)] uint dwAssign, [In, MarshalAs(UnmanagedType.U4)] uint dwWhichMoniker, [Out, MarshalAs(UnmanagedType.Interface)] out System.Runtime.InteropServices.ComTypes.IMoniker ppmk); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetContainer( [Out, MarshalAs(UnmanagedType.Interface)] out IOleContainer ppContainer); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int ShowObject(); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int OnShowWindow([In, MarshalAs(UnmanagedType.Bool)] bool fShow); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int RequestNewObjectLayout(); } #endregion #region IOleContainer Interface //MIDL_INTERFACE("0000011b-0000-0000-C000-000000000046") //IOleContainer : public IParseDisplayName //{ //public: // virtual HRESULT STDMETHODCALLTYPE EnumObjects( // /* [in] */ DWORD grfFlags, // /* [out] */ IEnumUnknown **ppenum) = 0; // virtual HRESULT STDMETHODCALLTYPE LockContainer( // /* [in] */ BOOL fLock) = 0; //}; [ComImport(), ComVisible(true), Guid("0000011B-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] public interface IOleContainer { //IParseDisplayName [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int ParseDisplayName( [In, MarshalAs(UnmanagedType.Interface)] object pbc, [In, MarshalAs(UnmanagedType.BStr)] string pszDisplayName, [Out, MarshalAs(UnmanagedType.LPArray)] int[] pchEaten, [Out, MarshalAs(UnmanagedType.LPArray)] object[] ppmkOut); //IOleContainer [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int EnumObjects( [In, MarshalAs(UnmanagedType.U4)] tagOLECONTF grfFlags, out IEnumUnknown ppenum); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int LockContainer( [In, MarshalAs(UnmanagedType.Bool)] Boolean fLock); } #endregion #region IOleObject Interface //MIDL_INTERFACE("00000112-0000-0000-C000-000000000046") //IOleObject : public IUnknown //{ //public: // virtual HRESULT STDMETHODCALLTYPE SetClientSite( // /* [unique][in] */ IOleClientSite *pClientSite) = 0; // virtual HRESULT STDMETHODCALLTYPE GetClientSite( // /* [out] */ IOleClientSite **ppClientSite) = 0; // virtual HRESULT STDMETHODCALLTYPE SetHostNames( // /* [in] */ LPCOLESTR szContainerApp, // /* [unique][in] */ LPCOLESTR szContainerObj) = 0; // virtual HRESULT STDMETHODCALLTYPE Close( // /* [in] */ DWORD dwSaveOption) = 0; // virtual HRESULT STDMETHODCALLTYPE SetMoniker( // /* [in] */ DWORD dwWhichMoniker, // /* [unique][in] */ IMoniker *pmk) = 0; // virtual HRESULT STDMETHODCALLTYPE GetMoniker( // /* [in] */ DWORD dwAssign, // /* [in] */ DWORD dwWhichMoniker, // /* [out] */ IMoniker **ppmk) = 0; // virtual HRESULT STDMETHODCALLTYPE InitFromData( // /* [unique][in] */ IDataObject *pDataObject, // /* [in] */ BOOL fCreation, // /* [in] */ DWORD dwReserved) = 0; // virtual HRESULT STDMETHODCALLTYPE GetClipboardData( // /* [in] */ DWORD dwReserved, // /* [out] */ IDataObject **ppDataObject) = 0; // virtual HRESULT STDMETHODCALLTYPE DoVerb( // /* [in] */ LONG iVerb, // /* [unique][in] */ LPMSG lpmsg, // /* [unique][in] */ IOleClientSite *pActiveSite, // /* [in] */ LONG lindex, // /* [in] */ HWND hwndParent, // /* [unique][in] */ LPCRECT lprcPosRect) = 0; // virtual HRESULT STDMETHODCALLTYPE EnumVerbs( // /* [out] */ IEnumOLEVERB **ppEnumOleVerb) = 0; // virtual HRESULT STDMETHODCALLTYPE Update( void) = 0; // virtual HRESULT STDMETHODCALLTYPE IsUpToDate( void) = 0; // virtual HRESULT STDMETHODCALLTYPE GetUserClassID( // /* [out] */ CLSID *pClsid) = 0; // virtual HRESULT STDMETHODCALLTYPE GetUserType( // /* [in] */ DWORD dwFormOfType, // /* [out] */ LPOLESTR *pszUserType) = 0; // virtual HRESULT STDMETHODCALLTYPE SetExtent( // /* [in] */ DWORD dwDrawAspect, // /* [in] */ SIZEL *psizel) = 0; // virtual HRESULT STDMETHODCALLTYPE GetExtent( // /* [in] */ DWORD dwDrawAspect, // /* [out] */ SIZEL *psizel) = 0; // virtual HRESULT STDMETHODCALLTYPE Advise( // /* [unique][in] */ IAdviseSink *pAdvSink, // /* [out] */ DWORD *pdwConnection) = 0; // virtual HRESULT STDMETHODCALLTYPE Unadvise( // /* [in] */ DWORD dwConnection) = 0; // virtual HRESULT STDMETHODCALLTYPE EnumAdvise( // /* [out] */ IEnumSTATDATA **ppenumAdvise) = 0; // virtual HRESULT STDMETHODCALLTYPE GetMiscStatus( // /* [in] */ DWORD dwAspect, // /* [out] */ DWORD *pdwStatus) = 0; // virtual HRESULT STDMETHODCALLTYPE SetColorScheme( // /* [in] */ LOGPALETTE *pLogpal) = 0; //}; [ComImport, ComVisible(true)] [Guid("00000112-0000-0000-C000-000000000046")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IOleObject { [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int SetClientSite( [In, MarshalAs(UnmanagedType.Interface)] IOleClientSite pClientSite); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetClientSite( [Out, MarshalAs(UnmanagedType.Interface)] out IOleClientSite site); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int SetHostNames( [In, MarshalAs(UnmanagedType.LPWStr)] string szContainerApp, [In, MarshalAs(UnmanagedType.LPWStr)] string szContainerObj); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int Close([In, MarshalAs(UnmanagedType.U4)] uint dwSaveOption); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int SetMoniker( [In, MarshalAs(UnmanagedType.U4)] int dwWhichMoniker, [In, MarshalAs(UnmanagedType.Interface)] System.Runtime.InteropServices.ComTypes.IMoniker pmk); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetMoniker( [In, MarshalAs(UnmanagedType.U4)] uint dwAssign, [In, MarshalAs(UnmanagedType.U4)] uint dwWhichMoniker, [Out, MarshalAs(UnmanagedType.Interface)] out System.Runtime.InteropServices.ComTypes.IMoniker moniker); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int InitFromData( [In, MarshalAs(UnmanagedType.Interface)] System.Runtime.InteropServices.ComTypes.IDataObject pDataObject, [In, MarshalAs(UnmanagedType.Bool)] bool fCreation, [In, MarshalAs(UnmanagedType.U4)] uint dwReserved); int GetClipboardData( [In, MarshalAs(UnmanagedType.U4)] uint dwReserved, [Out, MarshalAs(UnmanagedType.Interface)] out System.Runtime.InteropServices.ComTypes.IDataObject data); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int DoVerb( [In, MarshalAs(UnmanagedType.I4)] int iVerb, [In, MarshalAs(UnmanagedType.Struct)] ref tagMSG lpmsg, //or [In] IntPtr lpmsg, [In, MarshalAs(UnmanagedType.Interface)] IOleClientSite pActiveSite, [In, MarshalAs(UnmanagedType.I4)] int lindex, [In] IntPtr hwndParent, [In, MarshalAs(UnmanagedType.Struct)] ref tagRECT lprcPosRect); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int EnumVerbs([Out, MarshalAs(UnmanagedType.Interface)] out Object e); //int EnumVerbs(out IEnumOLEVERB e); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int OleUpdate(); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int IsUpToDate(); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetUserClassID([In, Out] ref Guid pClsid); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetUserType( [In, MarshalAs(UnmanagedType.U4)] uint dwFormOfType, [Out, MarshalAs(UnmanagedType.LPWStr)] out string userType); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int SetExtent( [In, MarshalAs(UnmanagedType.U4)] uint dwDrawAspect, [In, MarshalAs(UnmanagedType.Struct)] ref tagSIZEL pSizel); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetExtent( [In, MarshalAs(UnmanagedType.U4)] uint dwDrawAspect, [In, Out, MarshalAs(UnmanagedType.Struct)] ref tagSIZEL pSizel); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int Advise( [In, MarshalAs(UnmanagedType.Interface)] System.Runtime.InteropServices.ComTypes.IAdviseSink pAdvSink, out int cookie); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int Unadvise( [In, MarshalAs(UnmanagedType.U4)] uint dwConnection); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int EnumAdvise(out System.Runtime.InteropServices.ComTypes.IEnumSTATDATA e); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetMiscStatus( [In, MarshalAs(UnmanagedType.U4)] uint dwAspect, out int misc); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int SetColorScheme([In, MarshalAs(UnmanagedType.Struct)] ref object pLogpal); } #endregion }
Structs.cs
using System; using System.Text; using System.Runtime.InteropServices; namespace WindowsFormsApplication1 { [ComVisible(true), StructLayout(LayoutKind.Sequential)] public struct tagSIZEL { [MarshalAs(UnmanagedType.I4)] public int cx; [MarshalAs(UnmanagedType.I4)] public int cy; } [ComVisible(true), StructLayout(LayoutKind.Sequential)] public struct tagMSG { public IntPtr hwnd; [MarshalAs(UnmanagedType.I4)] public int message; public IntPtr wParam; public IntPtr lParam; [MarshalAs(UnmanagedType.I4)] public int time; // pt was a by-value POINT structure [MarshalAs(UnmanagedType.I4)] public int pt_x; [MarshalAs(UnmanagedType.I4)] public int pt_y; //public tagPOINT pt; } }
Form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using mshtml; namespace WindowsFormsApplication1 { public partial class Form1 : Form, IDocHostShowUI, IOleClientSite { #region IDocHostShowUI Members //Can not catch VBScript MsgBox and InputBox functions and javascript prompt //This does catch alert and confirm (VBScript as well) int IDocHostShowUI.ShowMessage(IntPtr hwnd, string lpstrText, string lpstrCaption, uint dwType, string lpstrHelpFile, uint dwHelpContext, ref int lpResult) { //Initially //lpResult is set 0 //S_OK //Host did not display its UI. MSHTML displays its message box. int iRet = Hresults.S_OK; /* //raise event? if (WBDocHostShowUIShowMessage != null) { //Refer to http://msdn2.microsoft.com/en-us/library/ms645505.aspx //for possible values of dwType DocHostShowUIShowMessageEvent.SetParameters(hwnd, lpstrText, lpstrCaption, dwType, lpstrHelpFile, dwHelpContext, lpResult); WBDocHostShowUIShowMessage(this, DocHostShowUIShowMessageEvent); if (DocHostShowUIShowMessageEvent.handled) { //Host displayed its user interface (UI). MSHTML does not display its message box. iRet = Hresults.S_OK; lpResult = DocHostShowUIShowMessageEvent.result; } DocHostShowUIShowMessageEvent.Reset(); }*/ ////uncomment to use //else //{ // lpResult = (int)WinApis.MessageBox(hwnd, lpstrText, lpstrCaption, dwType); // iRet = Hresults.S_OK; //} return iRet; } int IDocHostShowUI.ShowHelp(IntPtr hwnd, string pszHelpFile, uint uCommand, uint dwData, tagPOINT ptMouse, object pDispatchObjectHit) { return Hresults.E_NOTIMPL; } #endregion #region IOleClientSite Members int IOleClientSite.SaveObject() { return Hresults.E_NOTIMPL; //throw new Exception("The method or operation is not implemented."); } int IOleClientSite.GetMoniker(uint dwAssign, uint dwWhichMoniker, out System.Runtime.InteropServices.ComTypes.IMoniker ppmk) { ppmk = null; return Hresults.E_NOTIMPL; } int IOleClientSite.GetContainer(out IOleContainer ppContainer) { ppContainer = null; return Hresults.E_NOTIMPL; } int IOleClientSite.ShowObject() { return Hresults.S_OK; } int IOleClientSite.OnShowWindow(bool fShow) { return Hresults.E_NOTIMPL; } int IOleClientSite.RequestNewObjectLayout() { return Hresults.E_NOTIMPL; } #endregion public Form1() { InitializeComponent(); object obj = axWebBrowser1.GetOcx(); IOleObject oc = obj as IOleObject; oc.SetClientSite(this); } private void Form1_Load(object sender, EventArgs e) { axWebBrowser1.Navigate("c://index2.htm"); } } }
相关文章推荐
- WebBrowser拦截网页Alter消息
- Delphi中WebBrowser拦截网页Alert对话框消息(转)
- Delphi中WebBrowser拦截网页Alert对话框消息
- Delphi中WebBrowser拦截网页Alert对话框消息(转)
- C#钩子本线程内消息拦截
- [032] 微信公众帐号开发教程第8篇-文本消息中使用网页超链接
- Delphi中如何拦截键盘消息
- 超棒的网页消息提示控件,支持多种风格!
- IE调试网页之四:F12 开发人员工具控制台错误消息 (Windows)
- 一个拦截TEXT双击消息的代码!
- ASP.NET Web API之消息[拦截]处理
- 对发给Application.Handle消息的三次执行(拦截)消息的过程
- API 拦截窗口关闭&最大化&最小化消息
- c# 从网页获取内容及socket.udp 通信,控制台关闭消息及事件委托
- RxSwift Runtime分析(利用OC消息转发实现IOS消息拦截)<原理同ReactiveCocoa>
- 用BCB拦截Windows消息
- 一个拦截TEXT双击消息的代码!
- c#用IMessageFilter拦截键盘消息
- Android----Intent,运用由android系统帮助匹配实现打电话、发送短信、打开网页、播放音乐、打开视频、打开图片、安装APK、通知栏消息、拍照上传头像等功能