第一章介绍了如何打开网站,这一章介绍一下使用IHTMLDocument3完成登录博客园,以下为代码:

SHDocVw.InternetExplorer oBrowser = new SHDocVw.InternetExplorer();
object objFlags = 2;
object objTargetFrameName = "_self";
object objPostData = "";
object objHeaders = "";
oBrowser.Visible = true;
oBrowser.Navigate("https://passport.cnblogs.com/user/signin", ref objFlags, ref objTargetFrameName, ref objPostData, ref objHeaders);
while (true)
{
Thread.Sleep(1000);
if (oBrowser.ReadyState == SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE)
break;
}
IHTMLDocument3 doc3 = (IHTMLDocument3)oBrowser.Document;
IHTMLInputElement txtUserName = (IHTMLInputElement)doc3.getElementById("input1");
txtUserName.value = "你的用户名";
IHTMLInputElement txtPassWord = (IHTMLInputElement)doc3.getElementById("input2");
txtPassWord.value = "你的密码";
doc3.getElementById("signin").click();

使用以上代码就成功登录到博客园了,下面整理一下IHTMLDocument3以及相关的一些方法和属性:

IHTMLDocument3 方法 说明
attachEvent

从IE11开始,使用addEventListener。将指定的函数绑定到一个事件,以便每当事件在对象上触发时,该函数被调用。

createDocumentFragment 创建一个新文档并返回一个指向新创建的文档的指针。
createTextNode

从指定的值创建一个文本字符串。

detachEvent 从事件中取消绑定指定的功能,以使该功能在事件触发时停止接收通知。
getElementById 返回对具有指定值id属性的第一个对象的引用。
getElementsByName 根据name属性的值获取对象集合。
getElementsByTagName 根据指定的元素名称检索对象的集合。
recalc 此元素已过时,不再使用。重新计算当前文档中的所有动态属性。
releaseCapture

从当前文档中的对象中删除鼠标捕获。

IHTMLDocument3属性与事件 说明
baseUrl  
dir 设置或检索指示对象的读取顺序的值。
documentElement 获取对文档根节点的引用。
enableDownload 设置启用下载
inheritStyleSheets 暂未说明
onbeforeeditfocus 设置焦点之前
oncellchange 当数据来源发生变化时
oncontextmenu 当按下鼠标右键出现菜单或通过键盘触发页面菜单时
onpropertychange 改变属性时
onrowsdelete 当前数据记录被删除时
onrowsinserted 当前数据源将要插入新数据时
uniqueID 检索对象的自动生成的唯一标识符。
onstop 停止或离开时
ondatasetchanged 数据源发生变化时
ondatasetcomplete 当数据接收完成时
ondataavailable 当数据源的全部有效数据读取完毕时

这一章介绍了IHTMLDocument3,并且使用IHTMLDocument3完成了登录,下一章介绍IHTMLDocument2以及用法.

C#通过COM组件操作IE浏览器(二):使用IHTMLDocument3完成登录的更多相关文章

  1. C#通过COM组件操作IE浏览器(一):打开浏览器跳转到指定网站

    简介Internet Explorer对象模型 1.属性 属性 类型 描述 Application Object 返回对Internet Explorer对象的引用. Busy Boolean 返回一 ...

  2. C#通过COM组件操作IE浏览器(四):实用代码总结

    //执行js方法 IHTMLWindow2 win = oDocument2.parentWindow; win.execScript("functiona();", " ...

  3. C#通过COM组件操作IE浏览器(三):了解IHTMLDocument2

    IHTMLDocument2方法 说明 write 写入 writeln 写入并换行 open 打开一个流,以收集 document.write 或 document.writeln 的输出 clos ...

  4. DocX开源WORD操作组件的学习系列二

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  5. C# 操作IE浏览器

    最近的一个B/S系统中,用到了指模录入,当用户按了手指摸之后,要在IE浏览器的一个文本框上显示用户的姓名.由于要监控指模机的输入,因此客户端需要装一个.net控制台程序,通过此控制台程序监控指模机.这 ...

  6. 【Android】安卓四大组件之Activity(二)

    [Android]安卓四大组件之Activity(二) 前言 在这篇文章之前,我已经写过了一篇有关Activity的内容,是关于activity之间的页面跳转和数据传递,而这篇文章着重强调的是Acti ...

  7. AngularJs的UI组件ui-Bootstrap分享(二)——Collapse

    Collapse折叠控件使用uib-collapse指令 <!DOCTYPE html> <html ng-app="ui.bootstrap.demo" xml ...

  8. laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的问题

    遇到的问题: laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的问题(safari下也有同样问题); 解决办法: 给laydate绑定id; 解决前代码: <input ...

  9. Asp.Net调用Office组件操作时的DCOM配置 (转)

    Asp.Net调用Office组件操作时的DCOM配置 http://blog.csdn.net/gz775/article/details/6447758 在项目中将数据导出为Excel格式时出现“ ...

随机推荐

  1. inline, block, and inline-block

    总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...

  2. 自定义圆形ImageView(解决Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();报错问题)

    package com.bottle.bottlelilibrary.view; import android.content.Context; import android.graphics.Bit ...

  3. CSS网页布局

    注:优化样式表:增加css样式表的可读性 减伤样式重复 一.主要内容 1.布局分类;131   121 2.display属性排版 3.float属性排版(横向多列布局) 4.防止父类盒子塌陷 二.标 ...

  4. Golang:接口(interface)

    Go中没有class的概念.Go 语言中使用组合实现对象特性的描述.对象的内部使用结构体内嵌组合对象应该具有的特性,对外通过接口暴露能使用的特性.Go 语言的接口设计是非侵入式的,接口不知道接口被哪些 ...

  5. 3,postman的变量写法和collection

    1,环境变量和全局变量的添加和引用 pm.globals.get("variable_key");可以引用环境变量 2,collection的使用 当在tests中使用文件变量的时 ...

  6. JS Object.defineProperties()方法

    JS Object.defineProperties()方法 描述: Object.defineProperties()方法为目标对象同时配置多个属性. 语法: Object.defineProper ...

  7. 刷shipid 简便方法

    将表中的数据手动更改: select * from cmpps025 where  pino = ''; insert into cmpps025 select ncmp, pino, pono, i ...

  8. Java中子类对象初始化的过程

    Java中的继承机制看似简单,实际上包含了很多细节.最近在刷题过程中屡屡跳坑,于是自己仔细再学习了一下Java中子类初始化的细节,与大家分享. class Father { Father(){}; } ...

  9. hadoop HDFS常用文件操作命令

    命令基本格式: hadoop fs -cmd < args > 1. ls 列出hdfs文件系统根目录下的目录和文件 hadoop fs -ls /dir hadoop fs -ls -R ...

  10. C语言函数指针与 c#委托和事件对比

    C语言: 函数指针可以节省部分代码量,写类似具有多态的函数,比如要比较最大值,如果不用函数指针就只能写比较某一类型比如int类型的max函数,这个max无法比较string的大小.函数指针的意义就不多 ...