原文:关于webbrowser控件自动登陆的问题

楼主dtb(陈少)2004-03-04 22:16:55 在 VB / 网络编程 提问

请问怎么用webbrowser自动登陆www.jp168.com,(没有框架的网站试过了可以,这个有框架,登陆页面还会弹出窗口,搞得我晕晕的)  
  登陆成功后从返回页面里取出input控件uid的值 问题点数:80、回复次数:4

1 楼cutemouse(为梦而生)回复于 2004-05-09 23:54:21 得分 80

控制网页的FORMS行为  
   
  Private   Sub   Command2_Click()  
          With   WebBrowser1.Document.Forms(0)  
                  .c2.Checked   =   1  
                  .r1(1).Checked   =   1  
          End   With  
  End   Sub  
   
   
  Private   Sub   Command2_Click()  
          With   WebBrowser1.Document.Forms(0)  
                  .d1.Options(1).Selected   =   1  
          End   With  
  End   Sub  
   
  web.Document.getElementsByName("D1").Item(0).selectedIndex   =   1  
   
  ==============================================  
  <input   type="radio"   value="n"   checked   name="notecome">普通  
  <input   type="radio"   value="c"   name="notecome">原创  
  <input   type="radio"   value="z"   name="notecome">转帖  
  <input   type="button"   value="发送提交"   name="button"  
   
  比如一个网页里有如上代码  
  我想选择原创  
  webbrowser中怎么写  
   
   
  Private   Sub   Command1_Click()  
          WebBrowser1.Navigate   "c:\ggg.html"  
  End   Sub  
   
  Private   Sub   Command2_Click()  
          Dim   x  
           
          For   Each   x   In   WebBrowser1.Document.All("notecome")  
                  If   x.Value   =   "c"   Then  
                          x.Checked   =   True  
                  End   If  
          Next  
  End   Sub  
   
  ============================================================================================  
  假设你的HTML代码如下:  
   
  <html>  
  <script>  
      function   abcd(){  
          alert("haha");  
          return   false;  
      }  
  </script>  
   
  <body>  
      <a   id   =   'xxx'   href=#   onclick="abcd()">ggggg</a>  
  </body>  
  </html>  
   
  VB代码如下:  
  Private   Sub   Command1_Click()  
          WebBrowser1.Navigate   "http://www.applevb.com/script_test.html"  
  End   Sub  
   
  Private   Sub   Command2_Click()  
          Dim   a,   b  
          Dim   d   As   IHTMLDocument2  
           
          For   Each   a   In   WebBrowser1.Document.All  
                  Debug.Print   a.tagName  
                  If   (a.tagName   =   "SCRIPT")   Then  
   
                  End   If  
                  If   (a.tagName   =   "A")   Then  
                          If   a.Id   =   "xxx"   Then  
                                  a.FireEvent   ("onclick")  
                          End   If  
                  End   If  
          Next  
   
  点击Command1浏览这个网页,点击Command2运行其中的脚本abcd。  
   
   
  ==============================================  
   
  怎么编程把用户名,密码提交到网页上的登录页?  
  首先在程序中加入Webbrowser控件并加入引用   Microsoft   HTML   Object   Library。  
  假设你的HTML页面表单代码如下:  
  <form   method="POST"   action="http://chen/dll/chat/chatmain.exe/RegUser">  
      <p>请填写下面表单注册(*项为必添项)</p>  
      <p>*姓名<input   type="text"   name="Name"   size="20"></p>  
      <p>*昵称<input   type="text"   name="NickName"   size="20"></p>  
      <p>电子邮件<input   type="text"   name="EMail"   size="20"></p>  
      <p>*密码<input   type="text"   name="Password"   size="20"></p>  
      <p><input   type="submit"   value="提交"   name="B1"><input   type="reset"   value="全部重写"   name="B2"></p>  
  </form>  
  注意其中元素的type、Name、value属性。然后VB中的代码如下:  
  Private   Sub   Command1_Click()  
          WebBrowser1.Navigate   "http://chen/chat/newuser.htm"  
  End   Sub  
   
  Private   Sub   WebBrowser1_DocumentComplete(ByVal   pDisp   As   Object,   URL   As   Variant)  
          Dim   vDoc,   vTag  
          Dim   i   As   Integer  
               
          Set   vDoc   =   WebBrowser1.Document  
          List1.Clear  
          For   i   =   0   To   vDoc.All.length   -   1  
                  If   UCase(vDoc.All(i).tagName)   =   "INPUT"   Then  
                          Set   vTag   =   vDoc.All(i)  
                          If   vTag.Type   =   "text"   Or   vTag.Type   =   "password"   Then  
                                  List1.AddItem   vTag.Name  
                                  Select   Case   vTag.Name  
                                          Case   "Name"  
                                                  vTag.Value   =   "IMGod"  
                                          Case   "NickName"  
                                                  vTag.Value   =   "IMGod"  
                                          Case   "Password"  
                                                  vTag.Value   =   "IMGodpass"  
                                          Case   "EMail"  
                                                  vTag.Value   =   "IMGod@paradise.com"  
                                  End   Select  
                          ElseIf   vTag.Type   =   "submit"   Then  
                                  vTag.Click  
                          End   If  
                  End   If  
          Next   i  
  End   Sub  
  点击Command1就可以自动填表并提交了。    
   
   
  =====================================================================================  
  调用forms下的Submit控件的Click事件,我会做,但我不想这么做.  
   
  有没有办法直接调用类似于:web1.document.forms.submit,这句语句我怎么写都不成功  
  是这个  
  Webbrowser1.document.formName.submit()  
   
  不能用,formname为form1所以我调用Webbrowser1.document.form1.submit  
  出错类型:对象不支持该属性或方法,  
  然后调用Webbrowser1.document.forms(0).submit()  
  出错类型同上  
  Private   Sub   Command1_Click()  
          WebBrowser1.Navigate   "http://localhost/webapplication2/MyLogonPage.aspx"  
  End   Sub  
   
  Private   Sub   Command2_Click()  
          WebBrowser1.Document.All("Form1").submit  
  End   Sub  
  <form   name="form1"   method="post"   action="aa.asp">  
  ......  
  <input   name="reset"   type="reset"   vlaue="reset"   class="button">  
  </form>  
  我本想把reset的type改成submit   再提交,可出错,type是只读属性,不能修改,我只要有办法把这页面递交出去就行,当然,用POST也不行,参数太多,组合方式太多  
   
   
  你用下面的代码试一下你的页面:  
   
   
  Private   Sub   Command1_Click()  
          WebBrowser1.Navigate   "http://oakhome.xicp.net/webapplication2/MyLogonPage.aspx"  
  End   Sub  
   
  Private   Sub   Command2_Click()  
          Dim   x  
           
          On   Error   Resume   Next  
          For   Each   x   In   WebBrowser1.Document.All  
                  List1.AddItem   x.Name  
          Next  
  End   Sub  
   
  看看在List1里面列出来的页面元素的名字有没有Form1  
  找到原因了,你的页面是这样的:  
  <input   language="javascript"   onclick="if   (typeof(Page_ClientValidate)   ==   'function')   Page_ClientValidate();   "   name="Submit1"   id="Submit1"   type="submit"   value="Submit"   />  
  你把name="Submit1"   改成name="Submit"肯定就不会成功了,很不幸的是我要提交的页面中就有这样一句,现在可有办法解决吗???  
   
  =======================================================================  
  使用WebBrowser_V1接受消息  
   
  Private   WithEvents   WebMessage   As   WebBrowser_V1  
   
  Private   Sub   Form_Load()  
      Set   WebMessage   =   WebBrowser1.Object  
  End   Sub  
   
  Private   Sub   WebMessage_NewWindow(ByVal   URL   As   String,   ByVal   Flags   As   Long,   ByVal   TargetFrameName   As   String,   PostData   As   Variant,   ByVal   Headers   As   String,   Processed   As   Boolean)  
   
  '这里有Flags变量可以取得窗体应有的状态  
   
  End   Sub  
   
  具体值需要你自己去试试看。对象浏览器里面没有  
   
  =======================================================================================================  
   
  通过下面的方法遍历页面中的IFrame:  
   
  Sub   EnumFrames(ByVal   wb   As   WebBrowser)  
  Dim   pContainer   As   olelib.IOleContainer  
  Dim   pEnumerator   As   olelib.IEnumUnknown  
  Dim   pUnk   As   olelib.IUnknown  
  Dim   pBrowser   As   SHDocVw.IWebBrowser2  
   
        Set   pContainer   =   wb.Object.Document  
         
        '   Get   an   enumerator   for   the   frames  
        If   pContainer.EnumObjects(OLECONTF_EMBEDDINGS,   pEnumerator)   =   0   Then  
         
              Set   pContainer   =   Nothing  
               
              '   Enumerate   and   refresh   all   the   frames  
              Do   While   pEnumerator.Next(1,   pUnk)   =   0  
                     
                    On   Error   Resume   Next  
                     
                    '   Clear   errors  
                    Err.Clear  
                     
                    '   Get   the   IWebBrowser2   interface  
                    Set   pBrowser   =   pUnk  
         
                    If   Err.Number   =   0   Then  
                          Debug.Print   "Frame:   "   &   pBrowser.LocationURL  
                    End   If  
         
              Loop  
               
              Set   pEnumerator   =   Nothing  
         
        End   If  
         
  End   Sub

关于webbrowser控件自动登陆的问题的更多相关文章

  1. C# webBrowser控件使用

    C# webBrowser控件使用心得 最近用到WebBrowser控件,遇到很多问题,也学习了不少新的东西.下面是我在C#下写的关于WebBrowser控件使用的代码. 1.WebBrowser常用 ...

  2. C#中的WebBrowser控件的使用

    0.常用方法   Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表示的网址 Navigate(st ...

  3. C# WebBrowser控件使用教程与技巧收集

    常用的方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表示的网址 Navigate(strin ...

  4. C# 指定Webbrowser控件所用IE内核版本

    如果电脑上安装了IE8或者之后版本的IE浏览器,Webbrowser控件会使用IE7兼容模式来显示网页内容.解决方法是在注册表中为你的进程指定引用IE的版本号. 比如我的程序叫做a.exe,以64位机 ...

  5. WebBrowser控件打开https站点

    背景: 与上一篇博文一样,此文亦是由于开发DropboxAPI中遇到问题衍生出来的.由于需要重定向https类型网站,但自己的https证书是自签名的,总是提示'网站的安全证书存在问题'. 鉴此,查了 ...

  6. C#WebBrowser控件使用教程与技巧收集--苏飞收集

    C#WebBrowser控件使用教程与技巧收集--苏飞收集 先来看看常用的方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System. ...

  7. 009. C#中的WebBrowser控件的属性、方法及操作演示代码(转)

    本文转自 http://www.open-open.com/code/view/1430559996802 0.常用方法 Navigate(string urlString):浏览urlString表 ...

  8. C#WebBrowser控件使用教程与技巧

    获取非input控件的值 webBrowser1.Document.All["控件ID"].InnerText;或webBrowser1.Document.GetElementBy ...

  9. C#中的WebBrowser控件加载ActiveX插件

    C#中WebBrowser控件,将项目输入更改为x86输出,在页面打开时即可自动加载ActiveX控件

随机推荐

  1. Win10使用中的一些问题

    闲来无事,怒装Win10.使用上总体来说还是不错的,比Win8好一个档次吧. 不过呢在使用中遇到两个很郁闷的问题.权且几下 1.Win10激活 使用工具:激活工具 2.激活后浏览器被挟持 这让我现在非 ...

  2. 【原创】构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施

    原文:[原创]构建高性能ASP.NET站点 第六章-性能瓶颈诊断与初步调优(下前篇)-简单的优化措施 构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施 前言:本篇 ...

  3. Java 输出指定编码的字符串

    Java Sting类有个根据byte,字符编码来输出的构造函数.以下为java文档中的解释.public String(byte[] bytes, String charsetName) throw ...

  4. JavaScript事件收集

    1. onabort . 2. onactivate 当对象设置为活动元素时触发. 3. onafterprint 对象所关联的文档打印或打印预览后马上在对象上触发.   4. onafterupda ...

  5. Sqlserver 高并发和大数据存储方案

    Sqlserver 高并发和大数据存储方案 随着用户的日益递增,日活和峰值的暴涨,数据库处理性能面临着巨大的挑战.下面分享下对实际10万+峰值的平台的数据库优化方案.与大家一起讨论,互相学习提高!   ...

  6. C++ Primer笔记4_静态成员类_IO库

    1.静态成员类 static成员变量与函数 static成员变量:必须在类外初始化.(const或引用类型变量必须在构造函数初始化列表里初始化) static成员函数: 不依赖于类.相当于类里的全局函 ...

  7. 定制Attribute

    目录 Attribute是什么 自定义Attribute 一.Attribute是什么 将一些附加信息与制定目标相关联的方式.编译器在元数据中生成这些额外的信息.也叫做特性. 比如之前文章中提到的:枚 ...

  8. Cocos2d-x3.0 DrawNode吸取

    DrawNode正如它的绘图形状的节点,相互作用可以使将来更加灵活. DrawNode* DrawLayer::shape() { auto shape = DrawNode::create(); s ...

  9. poj3903 Stock Exchange(最长上升子序列)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:id=3903">http://poj.org/problem?id=3903 Descrip ...

  10. 【cocos2d-js公文】十八、Cocos2d-JS v3.0物业风格API

    1. 新的API风格 我们直接来看看你能够怎样使用Cocos2d-JS v3.0: 曾经的API 新的API node.setPosition(x, y); node.x = x; node.y = ...