搞了很长时间了,一直没搞通,网上很多C++的资料,请高手看下C#的代码,给些指导,怎么能让IE的 Backspace 和回车按键被我的代码接收。using System;
using System.Collections.Generic;
using System.Text;namespace IEHttpPlugin
{
    [System.Runtime.InteropServices.GuidAttribute("02361289-355D-3E8A-A181-28867B6D08EC")]
    public class ExplorerBar : System.Windows.Forms.UserControl, IObjectWithSite, IDeskBand, IDockingWindow, IOleWindow, IInputObject
    {
        SHDocVw.WebBrowserClass sdvWebBrowser;
        protected IInputObjectSite BandObjectSite;        System.Windows.Forms.WebBrowser wbWebBrowser;
        private System.Windows.Forms.ToolStrip tsToolBar;
        private System.Windows.Forms.ToolStripButton tsbSeekerManage;        public ExplorerBar()
        {
        }        //客户浏览器开始请求页面
        private string m_RequestUrl = "";
        private string m_RequestPostData = "";
        private void sdvWebBrowser_BeforeNavigate2(object pDisp, ref object URL, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
        {
            m_RequestUrl = URL.ToString();
        }        //文档下载完毕
        private void webBrowser_DocumentComplete(object pDisp, ref object URL)
        {
            try
            {
                string strLink = "";
                SHDocVw.WebBrowser wb = (SHDocVw.WebBrowser)pDisp;
                mshtml.HTMLDocument doc = (mshtml.HTMLDocument)wb.Document;                strLink = "请求URL :" + m_RequestUrl + "<br>";
            }
            catch (Exception ex)
            {
                Common.SaveTestInfo(ex.Message);
            }
        }        [System.Runtime.InteropServices.ComRegisterFunctionAttribute]
        public static void Register(Type t)
        {
        }        [System.Runtime.InteropServices.ComUnregisterFunctionAttribute]
        public static void Unregister(Type t)
        {
        }        protected override void OnGotFocus(System.EventArgs e)
        {
            base.OnGotFocus(e);
            NotifyExplorerGotFocus();
        }        protected override void OnLostFocus(System.EventArgs e)
        {
            base.OnLostFocus(e);
            if (HasFocusIO() != 0)
                NotifyExplorerLostFocus();
        }        public void NotifyExplorerLostFocus()
        {
            BandObjectSite.OnFocusChangeIS(this as IInputObject, 0);
        }        public void NotifyExplorerGotFocus()
        {
            BandObjectSite.OnFocusChangeIS(this as IInputObject, 1);
        }        #region IObjectWithSite 成员        public virtual void SetSite(Object site)
        {
            if (site != BandObjectSite)
            {
                if (BandObjectSite != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(BandObjectSite);
                }                if (sdvWebBrowser != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(sdvWebBrowser);
                    sdvWebBrowser = null;
                }
            }            BandObjectSite = (IInputObjectSite)site;
            if (BandObjectSite != null)
            {
                IServiceProviderCOM sp = (IServiceProviderCOM)BandObjectSite;
                Guid guid = ExplorerGUIDs.IID_IWebBrowserApp;
                Guid riid = ExplorerGUIDs.IID_IUnknown;                try
                {
                    object w;
                    sp.QueryService(ref guid, ref riid, out w);                    sdvWebBrowser = (SHDocVw.WebBrowserClass)System.Runtime.InteropServices.Marshal.CreateWrapperOfType(w as SHDocVw.IWebBrowser, typeof(SHDocVw.WebBrowserClass));
                    sdvWebBrowser.BeforeNavigate2 += new SHDocVw.DWebBrowserEvents2_BeforeNavigate2EventHandler(sdvWebBrowser_BeforeNavigate2);
                    sdvWebBrowser.DocumentComplete += new SHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(webBrowser_DocumentComplete);
                }
                catch (System.Runtime.InteropServices.COMException)
                {
                }
            }
            else
            {
                sdvWebBrowser.BeforeNavigate2 -= new SHDocVw.DWebBrowserEvents2_BeforeNavigate2EventHandler(sdvWebBrowser_BeforeNavigate2);
                sdvWebBrowser.DocumentComplete -= new SHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(webBrowser_DocumentComplete);
            }
        }        public virtual void GetSite(ref Guid riid, out Object site)
        {
            site = BandObjectSite;
        }        #endregion        #region IDeskBand 成员        public void GetWindow(out IntPtr hwnd)
        {
            hwnd = Handle;
        }        public void ContextSensitiveHelp(bool enterMode)
        {
        }        public void ShowDW(bool show)
        {
            if (show)
            {
                this.Show();
            }
            else
            {
                this.Hide();
            }
        }        public void CloseDW(int reserved)
        {
            this.Dispose(true);
        }        public void ResizeBorderDW(IntPtr borderRectangle, object toolbarSite, bool reserved)
        {
        }        public void GetBandInfo(int bandID, int viewMode, ref DESKBANDINFO info)
        {
            info.wszTitle = "IE助手";            info.ptActual.X = this.Size.Width;
            info.ptActual.Y = this.Size.Height;            info.ptMaxSize.X = -1;
            info.ptMaxSize.Y = -1;            info.ptMinSize.X = -1;
            info.ptMinSize.Y = -1;            info.ptIntegral.X = 1;
            info.ptIntegral.Y = 1;            info.dwModeFlags = DBIMF.DBIMF_VARIABLEHEIGHT;            info.dwMask &= ~DBIM.BKCOLOR;
        }        #endregion        #region IInputObject 成员        public void UIActivateIO(int activate, ref MSG msg)
        {
            if (activate != 0)
            {
                System.Windows.Forms.Control ctrl = GetNextControl(this, System.Windows.Forms.Control.ModifierKeys != System.Windows.Forms.Keys.Shift);//first or last
                this.Focus();
                if (ctrl != null) ctrl.Select();
            }
        }        public int HasFocusIO()
        {
            return this.ContainsFocus ? 0 : 1;          //S_OK : S_FALSE;
        }        public virtual Int32 TranslateAcceleratorIO(ref MSG msg)
        {
            if (msg.message == 0x100)                   //WM_KEYDOWN
            {
                if (msg.wParam == (uint)System.Windows.Forms.Keys.Tab)       //keys used by explorer to navigate from control to control
                {
                    if (SelectNextControl(ActiveControl, true, true, true, false))
                    {
                        return 0;                       //S_OK
                    }
                }
            }
            return 1;                                   //S_FALSE
        }        #endregion
    }
}