//本插件库提供的函数功能主要是用来操控IE进行自动网页访问
//支持IE及以IE为内核的网页浏览器

//v1.02 (2009.12.24): 网页元素的ID属性支持通配符。
                      修正几个小bug。
//v1.01 (2009.11.1) : 解决多网页同时操作时的一个bug。
//v1.0  (2009.10.26): 第一个发布的版本


//主要功能特色：
//1、支持IE内核浏览器的网页自动操作
//2、支持同时多脚本/多线程操作多个不同网页
//3、支持使用网页元素特征字符串准确定位网页元素进行相关操作
//4、配合脚本大师后台按键鼠标及找图找色等函数功能，可进行网页的后台操作

//关于网页元素特征字符串
//本插件支持使用网页特征字符串来定位网页元素并进行操作
//  该字符串基本结构为：属性名1:属性值1,属性名2:属性值2,……
//  属性名和属性值间用冒号分隔，2个属性之间用英文逗号分隔
//  如果属性值包含逗号，则将其用双引号扩起来，如: 属性名1:属性值1,"属性名2:属性值2",....
//  可支持的属性很多，下面列举的为常用属性，理论上所有HTML元素属性都可支持：(请参考HTML文档格式说明)
//  tag: 标记，常用的有a(超级链接),input(按钮或输入框),Select(下拉列表)等
//  text或txt: 网页元素显示的文本
//  name: 网页元素的名字
//  value: 网页元素的value
//  type: 网页元素的类型
//  href: 网页元素的超级链接
//  id: 网页元素的id
//  selected: 网页元素的selected属性(常用于下拉框列表的选择)
//  ……(所有元素属性都可支持，这里不一一列举)
//  此外，插件还定义了几个特殊的非网页元素属性：
//  Frame: 当网页上有多个框架时，可指定网页元素所在的框架编号，从0开始
//  idx: 当网页上符合条件的元素数量多于1个时，可使用idx属性来表示第几个符合条件的网页元素

//关于通配符的使用:
//*可以表示任何单个字符或字符串
//?只能表示单个字符

::IEGetHwnd
function IEGetHwnd(IE: IEObject): integer;
根据IE对象，返回该对象的文档窗口句柄
IE: 目标IE对象
返回值: IE文档窗口的句柄
说明: 返回的句柄不是IE主窗口的句柄，而是IE或IE内核浏览器显示网页的文档窗口句柄，可以使用该句柄进行后台键盘鼠标模拟
举例：set IEWnd=IEGetHwnd(IE)

::IEGetObjByHwnd
function IEGetObjByHwnd(HWND:integer): IEObject;
根据IE的文档窗口句柄，找出对应的IE对象
HWND: 类名为Internet Explorer_Server的文档窗口句柄，也就是IE显示文档的子窗口，注意，不是IE的主窗口句柄哦
返回值: 与HWND对应的IE对象
举例: 
set IEWnd=WindowFromMouse()
set IE=IEGetObjByHwnd(IEWnd)

::IEGetObjByUrl
function IEGetObjByUrl(Url:string): IEObject;
寻找当前系统运行中的IE浏览器的网址，返回符合网址的IE对象。
Url: 一个表示网址的字符串，可以使用通配符*/?
返回值: 一个IE对象，其当前打开的网址满足参数Url的要求
举例: set IE=IEGetObjByUrl("*.sina.com*")

::IEGetObjByTitle
function IEGetObjByTitle(Title:string): IEObject;
寻找当前系统运行中的IE浏览器的标题，返回符合标题的IE对象
Title: 一个表示网页标题的字符串，可以使用通配符*/?
返回值: 一个IE对象，其当前打开的网页标题满足参数Title的要求
举例: set IE=IEGetObjByTitle("*新浪首页*")

::IEValid
IEValid(IE:IEObject):integer;
测试指定的IE对象是否有效，有效的返回1，无效则返回0
IE: 需测试是否有效的IE对象
返回值: IE对象有效返回1，无效返回0
举例: set i=IEValid(IE)

::IEWaitComplete
procedure IEWaitComplete(IE: IEObject; TimeOut:integer [; FrameIndex:integer]);
等待IE加载页面完成
IE: 目标IE对象，如该对象无效，则函数直接退出
TimeOut: 最长的等待时间，超过该时间则直接退出而不管页面是否加载完成，当取值为-1时，为无限等待
FrameIndex: 可选参数，当页面包含多个框架时，用来指定具体等待哪个框架的页面加载完成，框架编号从0开始
举例: do IEWaitComplete(IE,-1)  //无限期的等待IE页面加载完成

::IEStatus
function IEStatus(IE: IEObject; [FrameIndex:integer]): string;
返回IE对象的状态
IE: 目标IE对象
FrameIndex: 可选参数，当网页为多框架结构时，指定检测哪个框架的页面状态，框架编号从0开始
返回值: 目标IE对象的状态，可能有以下几个字符串:
    "UNINITIALIZED"  : 对象未初始化
    "LOADING"        : 对象正在载入它的属性
    "LOADED"         : 对象初始化完成
    "INTERACTIVE"    : 对象可以进行操作，但并非所有数据都可用
    "COMPLETE"       : 对象接收完所有的数据
举例: set s=IEStatus(IE)

::IENewObj
function IENewObj(Url:string; [WaitCompleteTimeOut:integer]): IEObject
打开一个新的IE窗口，并且访问指定网页地址
Url: 打开IE对象窗口后，指定访问的默认网址
WaitCompleteTimeOut: 可选参数，表示打开IE窗口后等待多少毫秒以便页面加载完成，-1表示无限等待，0表示不等待，如该参数省略，则表示不等待页面加载完成
返回值: 新打开的IE对象
举例: set IE=IENewObj("www.sina.com")

::IEClose
procedure IEClose(IE: IEObject);
关闭IE窗口
IE: 将要关闭的IE对象
举例: do IEClose(IE)

::IEGetSelText
funtion IEGetSelText(IE: IEObject): string;
获取指定IE对象的文档窗口中，当前选中的文字字符串
IE: 目标IE对象
返回值: 当前IE中选中的字符串
举例: set s=IEGetSelText(IE)

::IEGetUrl
function IEGetUrl(IE: IEObject): string;
获取指定IE对象当前打开的Url地址
IE: 目标IE对象
返回值: 当前IE打开的网址字符串
举例: set Url=IEGetUrl(IE)

::IEGetTitle
function IEGetTitle(IE: IEObject): string;
获取指定IE对象当前打开页面的标题信息
IE: 目标IE对象
返回值: 当前IE打开的网页的标题
举例: set title=IEGetTitle(IE)

::IEGo
function IEGo(IE:IEObject; Url:string):integer;
控制IE自动打开指定的Url网址
IE: 目标IE对象
Url: 需控制IE访问的网页
返回值: 如果访问成功，返回1，否则返回0
举例: do IEGo(IE,"www.baidu.com")

::IEBack
function IEBack(IE: IEObject):integer;
控制IE对象后退浏览前一个网页
IE: 目标IE对象
返回值: 如果成功，返回1，否则返回0
举例: do IEBack(IE)

::IEForward
function IEForward(IE: IEObject): integer;
控制IE对象前进浏览后一个网页
IE: 目标IE对象
返回值: 如果成功，返回1，否则返回0
举例: do IEForward(IE)

::IEHome
function IEHome(IE: IEObject): integer;
控制IE对象访问默认主页
IE: 目标IE对象
返回值: 如果成功，返回1，否则返回0
举例: do IEHome(IE)

::IERefresh
function IERefresh(IE: IEObect; [id:integer]): integer;
控制IE刷新网页
IE: 目标IE对象
id: 可选参数，表示刷新方式，0表示一般刷新，1表示强制完全刷新，如省略，默认为一般刷新
返回值: 如果刷新成功，返回1，否则返回0
举例: do IERefresh(IE,0) --> 等效于 do IERefresh(IE)

::IEexecScript
function IEexecScript(IE: IEObject; Code,Language:string):string;
让目标IE对象执行指定的JavaScript/VBScript脚本代码
IE: 目标IE对象
Code: 脚本代码
Language: 脚本类型，有JavaScript/VBScript等
举例: do IEexecScript(IE,"alert(3);","JavaScript")

::IEAlert
procedure IEAlert(IE: IEObject; Msg:string);
显示一个网页提示对话框，提示信息为Msg字符串，只有一个“确定”按钮
IE: 目标IE对象
Msg: 要显示的提示对话框内的信息
举例: do IEAlert(IE,"test")

::IEConfirm
function IEConfirm(IE: IEObject; msg:string):integer;
显示一个网页提示对话框，并提示用户选择“是”或“否”
IE: 目标IE对象
Msg: 对话框中显示的提示信息
返回值: 如果用户选择了“是”，返回1，否则返回0
举例: set i=IEConfirm(IE,"请选择是或者否")

::IEPrompt
function IEPrompt(IE: IEObject; Msg,DefaultStr:string):string;
显示一个网页提示对话框，并提示用户输入相关信息
IE: 目标IE对象
Msg: 对话框中显示的提示信息
DefaultStr: 默认的输入字符串，如果用户什么都不输入直接点确定按钮，则返回该值
返回值: 用户输入的字符串
注意: 对于IE7及以上版本，默认情况下，系统自动对Internet区域禁用此函数，如需使用此函数，需将目标站点加入可信区域
举例: set s=IEPrompt(IE,"请输入一个字符串","默认的字符串")

::IEWidth
function IEWidth(IE: IEObject): integer;
获取IE窗体宽度
IE: 目标IE对象
返回值: IE窗口宽度
举例: set wie=IEWidth(IE)

::IEHeight
function IEHeight(IE: IEObject): integer;
获取IE窗体高度
IE: 目标IE对象
返回值: IE窗口高度
举例: set hie=IEHeight(IE)

::IEGetScrollLeft
function IEGetScrollLeft(IE: IEObject): integer;
获取IE打开的网页当前横向滚动到的位置
IE: 目标IE对象
返回值: 当前IE打开的网页横向滚动的位置
举例: set i=IEGetScrollLeft(IE)

::IESetScrollLeft
function IESetScrollLeft(IE: IEObject; Left:integer): integer;
设置IE打开的网页横向滚动到指定的位置
IE: 目标IE对象
Left: 需要滚动到的位置
返回值: 操作成功返回1，否则返回0
举例: set b=IESetScrollLeft(IE,50)

::IEGetScrollTop
function IEGetScrollTop(IE: IEObject): integer;
获取IE打开的网页当前纵向滚动到的位置
IE: 目标IE对象
返回值: 当前IE打开的网页纵向滚动的位置
举例: set i=IEGetScrollTop(IE)

::IESetScrollTop
function IESetScrollTop(IE: IEObject; Left:integer): integer;
设置IE打开的网页纵向滚动到指定的位置
IE: 目标IE对象
Left: 需要滚动到的位置
返回值: 操作成功返回1，否则返回0
举例: set b=IESetScrollTop(IE,50)

::IEScrollTo
function IEScrollTo(IE: IEObject; x,y:integer; [FrameIndex:integer]):integer;
滚动IE页面，达到横向x，纵向y的位置
IE: 目标IE对象
x,y: 滚动的位移
FrameIndex: 可选参数，当有框架时，可指定滚动哪个框架的页面
返回值: 如果IE对象有效，返回1，否则返回0
举例: do IEScrollTo(IE,0,20)

::IEScrollBy
function IEScrollBy(IE: IEObject; x,y:integer; [FrameIndex:integer]):integer;
滚动IE页面，相对位移横向x，纵向y
IE: 目标IE对象
x,y: 滚动的相对位移
FrameIndex: 可选参数，当有框架时，可指定滚动哪个框架的页面
返回值: 如果IE对象有效，返回1，否则返回0
举例: do IEScrollBy(IE,0,20)

::IEMoveTo
function IEMoveTo(IE: IEObject; x,y:integer; [FrameIndex:integer]):integer;
调整IE窗口的坐标为(x,y)
IE: 目标IE对象
x,y: 移动到的坐标
FrameIndex: 可选参数，当有框架时，可指定操作哪个框架的页面
返回值: 如果IE对象有效，返回1，否则返回0
注意: 仅对IE浏览器有效，对IE内核的外壳浏览器无效
举例: do IEMoveTo(IE,0,20)

::IEMoveBy
function IEMoveBy(IE: IEObject; x,y:integer; [FrameIndex:integer]):integer;
调整IE窗口的坐标为在当前位置移动相对坐标(x,y)
IE: 目标IE对象
x,y: 移动的相对坐标
FrameIndex: 可选参数，当有框架时，可指定操作哪个框架的页面
返回值: 如果IE对象有效，返回1，否则返回0
注意: 仅对IE浏览器有效，对IE内核的外壳浏览器无效
举例: do IEMoveBy(IE,0,20)

::IEResizeTo
function IEResizeTo(IE: IEObject; x,y:integer; [FrameIndex:integer]):integer;
调整IE窗口的大小为宽x,高y
IE: 目标IE对象
x,y: 窗口的宽和高
FrameIndex: 可选参数，当有框架时，可指定操作哪个框架的页面
返回值: 如果IE对象有效，返回1，否则返回0
注意: 仅对IE浏览器有效，对IE内核的外壳浏览器无效
举例: do IEResizeTo(IE,0,20)

::IEResizeBy
function IEResizeBy(IE: IEObject; x,y:integer; [FrameIndex:integer]):integer;
调整IE窗口的大小为增加宽x,增加高y
IE: 目标IE对象
x,y: 增加的窗口宽和高
FrameIndex: 可选参数，当有框架时，可指定操作哪个框架的页面
返回值: 如果IE对象有效，返回1，否则返回0
注意: 仅对IE浏览器有效，对IE内核的外壳浏览器无效
举例: do IEResizeBy(IE,0,20)

::IESetCharSet
function IESetCharSet(IE: IEObject; ACharSet:string):integer;
设置IE显示文档的字符集
IE: 目标IE对象
ACharSet: 字符集
返回值: 如果IE对象有效，返回1，否则返回0
举例: do IESetCharSet(IE,"gb2312")

::IEGetCharSet
function IEGetCharSet(IE: IEObject): string;
返回目标IE文档的字符集
IE: 目标IE对象
返回值: 如果执行成功，返回字符集，否则返回空字符串
举例: set CharSet=IEGetCharSet(IE)

::IESetVisible
function IESetVisible(IE: IEObject; Value:integer): integer;
设置IE窗口是否可见
IE: 目标IE对象
Value: 1表示设置窗口可见，0表示设置窗口隐藏
返回值: 如果设置成功，返回1，否则返回0
注意: 仅对IE浏览器有效，对IE内核的外壳浏览器无效
举例: do IESetVisible(IE,0)  -> 隐藏指定IE窗口

::IEGetVisible
function IEGetVisible(IE: IEObject): integer;
查看指定IE对象窗口是否可见
IE: 目标IE对象
返回值: 1表示窗口为可见状态，0表示窗口为隐藏状态
注意: 仅对IE浏览器有效，对IE内核的外壳浏览器无效
举例: set i=IEGetVisible(IE)

::IEItemExists
function IEItemExists(IE: IEObject; ElementStr:string):integer;
检查IE显示的网页中，指定网页元素是否存在
IE: 目标IE对象
ElementStr: 网页元素特征字符串，用于定位网页元素
  该字符串基本结构为：属性名1:属性值1,属性名2:属性值2,……
  可支持的属性很多，下面列举的为常用属性，理论上所有HTML元素属性都可支持：(请参考HTML文档格式说明)
  tag: 标记，常用的有a(超级链接),input(按钮或输入框),Select(下拉列表)等
  text或txt: 网页元素显示的文本
  name: 网页元素的名字
  value: 网页元素的value
  type: 网页元素的类型
  href: 网页元素的超级链接
  id: 网页元素的id
  selected: 网页元素的selected属性(常用于下拉框列表的选择)
  ……(所有元素属性都可支持，这里不一一列举)
  此外，插件还定义了几个特殊的非网页元素属性：
  Frame: 当网页上有多个框架时，可指定网页元素所在的框架编号，从0开始
  idx: 当网页上符合条件的元素数量多于1个时，可使用idx属性来表示第几个符合条件的网页元素
返回值: 如果网页元素存在，返回1，否则返回0
举例: set i=IEItemExists(IE,"tag:a,Text:*下载*")  -> 检查网页上是否存在一个超级链接，其文字包含“下载”字样的

::IEClick
function IEClick(IE: IEObject; ElementStr:string):integer;
模拟点击网页上的可以点击的网页元素，比如提交按钮、超级链接等
IE: 目标IE对象
ElementStr: 网页元素特征字符串，用于定位网页元素
  该字符串基本结构为：属性名1:属性值1,属性名2:属性值2,……
  可支持的属性很多，下面列举的为常用属性，理论上所有HTML元素属性都可支持：(请参考HTML文档格式说明)
  tag: 标记，常用的有a(超级链接),input(按钮或输入框),Select(下拉列表)等
  text或txt: 网页元素显示的文本
  name: 网页元素的名字
  value: 网页元素的value
  type: 网页元素的类型
  href: 网页元素的超级链接
  id: 网页元素的id
  selected: 网页元素的selected属性(常用于下拉框列表的选择)
  ……(所有元素属性都可支持，这里不一一列举)
  此外，插件还定义了几个特殊的非网页元素属性：
  Frame: 当网页上有多个框架时，可指定网页元素所在的框架编号，从0开始
  idx: 当网页上符合条件的元素数量多于1个时，可使用idx属性来表示第几个符合条件的网页元素
返回值: 模拟点击成功返回1，否则返回0

::IESetAttribute
function IESetAttribute(IE: IEObject; ElementStr:string; AttributeName:string; AttributeValue:string):integer;
修改网页上指定网页元素的属性
IE: 目标IE对象
ElementStr: 网页元素特征字符串，用于定位网页元素
  该字符串基本结构为：属性名1:属性值1,属性名2:属性值2,……
  可支持的属性很多，下面列举的为常用属性，理论上所有HTML元素属性都可支持：(请参考HTML文档格式说明)
  tag: 标记，常用的有a(超级链接),input(按钮或输入框),Select(下拉列表)等
  text或txt: 网页元素显示的文本
  name: 网页元素的名字
  value: 网页元素的value
  type: 网页元素的类型
  href: 网页元素的超级链接
  id: 网页元素的id
  selected: 网页元素的selected属性(常用于下拉框列表的选择)
  ……(所有元素属性都可支持，这里不一一列举)
  此外，插件还定义了几个特殊的非网页元素属性：
  Frame: 当网页上有多个框架时，可指定网页元素所在的框架编号，从0开始
  idx: 当网页上符合条件的元素数量多于1个时，可使用idx属性来表示第几个符合条件的网页元素
AttributeName: 属性名称，如Value,Text,Selected等
AttributeValue: 属性值
返回值: 如果修改成功，返回1，否则返回0

::IEGetAttribute
function IEGetAttribute(IE: IEObject; ElementStr:string; AttributeName:string):string;
读取网页上指定网页元素的属性
IE: 目标IE对象
ElementStr: 网页元素特征字符串，用于定位网页元素
  该字符串基本结构为：属性名1:属性值1,属性名2:属性值2,……
  可支持的属性很多，下面列举的为常用属性，理论上所有HTML元素属性都可支持：(请参考HTML文档格式说明)
  tag: 标记，常用的有a(超级链接),input(按钮或输入框),Select(下拉列表)等
  text或txt: 网页元素显示的文本
  name: 网页元素的名字
  value: 网页元素的value
  type: 网页元素的类型
  href: 网页元素的超级链接
  id: 网页元素的id
  selected: 网页元素的selected属性(常用于下拉框列表的选择)
  ……(所有元素属性都可支持，这里不一一列举)
  此外，插件还定义了几个特殊的非网页元素属性：
  Frame: 当网页上有多个框架时，可指定网页元素所在的框架编号，从0开始
  idx: 当网页上符合条件的元素数量多于1个时，可使用idx属性来表示第几个符合条件的网页元素
AttributeName: 网页元素的属性名称，如Value,Text,Selected等
返回值: 如果读取成功，返回网页元素的属性值，否则返回空字符串
