1.我的程序要浏览网页,有不使用IE控件浏览网页的其他方法吗?
2.不能用脚本,因为IE控件内连接的网页同时也会被IE浏览器访问,如果使用脚本的话将会把IE浏览器中的滚动条隐藏掉!
3.关于doinfo(野比效果器) 说的方法请问具体如何实现?有类似源代码吗?
4.使用SendMessage可以对ListBox等一些控件实现上下左右滚动的动作,但同样的方法使用在IE控件或其他的一些控件上,无法实现其功能,请问有谁能实现这样的功能?该怎么去实现?最后,如何确实能解决,分可以另外再给!

解决方案 »

  1.   

    1.如何使用程序控制IE控件的滚动条的隐藏?
      把下面的定义加入Project:
      using System.Runtime.InteropServices;  struct DOCHOSTUIINFO {
        public uint cbSize;
        public uint dwFlags;
        public uint dwDoubleClick;
        public IntPtr pchHostCss;
        public IntPtr pchHostNS;
    }  [ComImport,
      Guid("BD3F23C0-D43E-11CF-893B-00AA00BDCE1A"),
      InterfaceType(ComInterfaceType.InterfaceIsIUnknown) ]
      public interface IDocHostUIHandler
      {
        public void ShowContextMenu(int dwContext, IntPtr pPoint, IntPtr pCommandTarget, IntPtr HTMLTagElement);
        public void GetHostInfo(ref DOCHOSTUIINFO theHostUIInfo);
        public void ShowUI(int dwID, IntPtr pActiveObject, IntPtr pCommandTarget, IntPtr pFrame, IntPtr pDoc);
        public void HideUI();
        public void UpdateUI();
        public void EnableModeless(int fEnable);
        public void OnDocWindowActivate(int fActivate);
        public void OnFrameWindowActivate(int fActivate);
        public void ResizeBorder(IntPtr prcBorder, int pUIWindow, int fFrameWindow);
        public void TranslateAccelerator(IntPtr lpMsg, IntPtr pguidCmdGroup, int nCmdID);
        public void GetOptionKeyPath(IntPtr pchKey, int dw);
        public void GetDropTarget(IntPtr pDropTarget, IntPtr ppDropTarget);
        public void GetExternal(IntPtr ext);
        public void TranslateUrl(int dwTranslate, IntPtr pchURLIn, IntPtr ppchURLOut);
        public void FilterDataObject(IntPtr pDO, IntPtr ppDORet);
      }  你用来Host WebBrowser的Form需要实现上面的Interface:
      public class YourForm : System.Windows.Forms.Form,
      IDocHostUIHandler   实现上面的函数,除了GetHostInfo以外,其余只要给个空函数体就好({})。
      public void GetHostInfo(ref DOCHOSTUIINFO HostUIInfo)
      {
        HostUIInfo.dwFlags |= (DOCHOSTUIFLAG.DOCHOSTUIFLAG_SCROLL_NO);
      }
      
       //DONE!
      

  2.   

    2.使用SendMessage可以对ListBox等一些控件实现上下左右滚动的动作,但同样的方法使用在IE控件或其他的一些控件上,无法实现其功能,请问有谁能实现这样的功能?该怎么去实现?  引用Add Reference --> .NET ---> Microsoft.mshtml  mshtml.IHTMLDocument2 doc = WebBrowser.Document as mshtml.IHTMLDocument2;
      mshtml.IHTMLElement2 body = doc.body as mshtml.IHTMLElement2;
      body.put_scrollTop(200000);
      

  3.   

    enum DOCHOSTUIFLAG {
        DOCHOSTUIFLAG_DIALOG = 0x00000001,
        DOCHOSTUIFLAG_DISABLE_HELP_MENU = 0x00000002,
        DOCHOSTUIFLAG_NO3DBORDER = 0x00000004,
        DOCHOSTUIFLAG_SCROLL_NO = 0x00000008,
        DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE = 0x00000010,
        DOCHOSTUIFLAG_OPENNEWWIN = 0x00000020,
        DOCHOSTUIFLAG_DISABLE_OFFSCREEN = 0x00000040,
        DOCHOSTUIFLAG_FLAT_SCROLLBAR = 0x00000080,
        DOCHOSTUIFLAG_DIV_BLOCKDEFAULT = 0x00000100,
        DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY = 0x00000200,
        DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY = 0x00000400,
        DOCHOSTUIFLAG_CODEPAGELINKEDFONTS = 0x00000800,
        DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8 = 0x00001000,
        DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8 = 0x00002000,
        DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE = 0x00004000,
        DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION = 0x00010000,
        DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION = 0x00020000,
        DOCHOSTUIFLAG_THEME = 0x00040000,
        DOCHOSTUIFLAG_NOTHEME = 0x00080000,
        DOCHOSTUIFLAG_NOPICS = 0x00100000,
        DOCHOSTUIFLAG_NO3DOUTERBORDER = 0x00200000,
        DOCHOSTUIFLAG_DISABLE_EDIT_NS_FIXUP = 0x1,
        DOCHOSTUIFLAG_LOCAL_MACHINE_ACCESS_CHECK = 0x1,
        DOCHOSTUIFLAG_DISABLE_UNTRUSTEDPROTOCOL = 0x1
    }