首页 > 代码库 > aardio窗体相关

aardio窗体相关

 

 

import win.ui.minmax;

win.ui.minmax(winform)

winform.hitmax() 最大化,默认最大化就会还原

winform.close() 关闭窗口

 

一、创建简单的WEB窗口(winform)
1.1点击新建WEB窗体即可创建WEB浏览器,默认代码如下:

//创建web窗体
var wb = web.form( winform 

,//可输入_UIFLAG_ 前缀的常量自定义外观

,//可输入_DLCTL_ 前缀的常量以控制下载行为

,//"USER AGENT"

);


第二个参数可以使用一个或多个_UIFLAG_ 前缀的常量自定义外观,多个常量之间用位或操作符( | ) 连接.
第三个参数可使用_DLCTL_前缀的常量以控制下载行为,多个常量之间用位或操作符( | ) 连接.

第四个参数USER AGENT(新版新添加还没知道用法请老大指导)

较常用第三个参数,控制下载行为,具体参数可参考帮助文档 

常用有

_DLCTL_DOWNLOADONLY 下载图片,但不显示
_DLCTL_NO_FRAMEDOWNLOAD web窗体对包含框架的页面进行语法分析但不下载任何帧, 同时忽略框架,
_DLCTL_RESYNCHRONIZE 忽略缓存中的数据并向服务器请求更新
_DLCTL_SILENT 组件对话框、脚本错误对话框静默模式
_DLCTL_NOFRAMES 禁止框架


1.2常用WEB窗体特殊设置
1).  禁止所有脚本错误对话框,并使脚本继续运行。 与wb.silent不同,wb.noScriptErr仅对脚本错误对话框起作用,并且不会阻止脚本执行.

wb.noScriptErr = true


2.)不显示网页JS弹出的【确定】窗口

wb.showMsg=function( 提示信息, 对话框标题 ){
    return false;/*返回false则不显示对话框*/
}


如想显示【确定】窗口并自动点击后消失则如下:

wb.showMsg=function(text/*信息*/,caption/*标题*/){

        closeDlg_t = function(title) {
                import winex;
        
                //查找符合标题的对话框
                var hwnd; 
                do{
                        hwnd = winex.find("#32770"/*标准对话框类名*/,title )
                        sleep(100)
                }while( !hwnd ) 
                
                //查找对话框上的第一个按钮
                var hbuttton = winex.findEx(hwnd,1,"Button");
                winex.click(hbuttton);
                
        }
        thread.create(closeDlg_t,caption/*传递参数给线程*/ )
        
        
        return true; /*返回false则不显示对话框*/
}


(更多资料详见帮助WEB窗体事件说明)


1.3 WEB窗体最大化、最小化

//点击最大化,但是这个函数如果发现最大化会还原窗口,并返回一个值表示当前是否最大化
winform.hitmax()

//点击最小化按钮
winform.hitmin()

//这个是最大化,并且显示,多了一个显示的步骤
winform.show(0x3/*_SW_MAXIMIZE*/)

//这个是最小化,并显示
winform.show(0x6/*_SW_MINIMIZE*/)


1.4禁止点击链接在新窗口打开
A

//在wb.wait()后 添加下面代码,在所属的窗口禁止弹出
for(k,ele in wb.eachLinks()){
    
    ele.target = "_self"
}


写在事件里,这样每次打开页面就自动修改,不需要写在wb.wait后面了.全局开始禁止弹出窗口

wb.DocumentComplete=function( pDisp, url) {
    /*当整个文档完成时触发,刷新页面不触发*/
  for(k,ele in wb.eachLinks()){ 
  ele.target = "_self"
  }


//打开目标网站
wb.go("http://www.ecranesoft.com/")


C

//打开一个网址
wb.go(网址,自定义http请求头,目标窗口="_self")


D

wb.NewWindow2=function( ppDisp, Cancel) {
    
/*弹出新窗口以前触发 */ 
    
owner.go( owner.translateUrl )
    
return ppDisp, true/*第二个返回值如果为真,则取消新窗口*/  
}



E

wb.translate = function( url ){
    
/*解析URL时触发 */
    
owner.translateUrl = url; 
}




1.5在控件显示WEB窗体
web.form是一个类,其构造函数可以在现有窗口对象中插入浏览器控件.窗口对象可以是一个win.form对象,也可以是窗体上的控件,例如static控件.

如:在static控件显示WEB窗体浏览

//创建web窗体
var wb = web.form( winform.static //这是winform窗体上的一个静态文本框控件 
    ,0x4/*_UIFLAG_NO3DBORDER*/ | 0x8/*_UIFLAG_SCROLL_NO*/  //禁用边框,禁用滚动条
    ,0x10/*_DLCTL_DLIMAGES*/ | 0x40000000/*_DLCTL_SILENT*/  //允许下载图片,但是禁用组件对话框、脚本错误对话框等
    ,//"USER AGENT"
    );


还可添加多控件显示多个WEB网页



二、自动填表、自动登录(提交)代码
2.1 自动填表(有NAME或ID)
A 简单 ,没框架,只有1个属性名

/*寻找所属节点的属性,然后输入新的属性值
当知道属性ID或NAME时可采用下面语句*/
ele=wb.waitEle("_"//双引号里填属性ID或name)
ele.value = http://www.mamicode.com/_//修改属性默认值;
ele.fireEvent("_"//当有事件执行函数时需事件发生器,如onchange onsubit)
ele = wb.getEle( HTML节点的ID名name, 框架名 ) 
/*调用wb.getEle之前必须调用 wb.wait() 等待网页下载完毕. 
而使用 wb.waitEle() 则实现等待该节点下载并返回该节点的功能,而无须等待整个网页下载完*/


多个属性名相同

tele = wb.getEles( HTML节点的name属性, 框架名 )
tele(0).setAttribute("属性名字", "修改第一个节点属性值")


该函数返回网页上所有name属性相同的同名节点.返回值为一个com数组.注意com数组使用()括号读取成员而不是使用索引操作符[]
可以通过第二个参数指定框架窗口,该参数可以省略.


2.2 自动登录或提交表单

ele.form.submit()//自动提交表单


2.3 特殊形式提交(无NAME无ID)
采用wb.eachAll 遍历方法查找节点,并使用ele.click()模拟点击

//遍历所有input节点
for( i,ele in wb.eachAll("input") ){
    
if( ele.属性 == "_"//当找到所属的属性恒等于一个“点击链接的值” )  
        ele.click();
//然后点击
}


遇到特殊形式,采用遍历查找是最简单的方法。

更多的自动登录示例可查看旧论坛的帖子,里面汇总了各种形式的登录示范,还有POST登录方法。
163邮箱登录问题(carl版主指导163填表及登录)
登录问题(帖子有老大指导多种方法自动登录)

AAuto 网页操作专题视频(lujjh超版制作的经典视频教程)
取得指定网页节点的方法归纳 (模拟点击必须掌握的知识)

2.4 自动点击网页超链接

也采用遍历查找超链接,然后自动点击,老大教我们封装了一个点击超链接函数clickLink()


clickLink = function(title){//给函数一个连接名参数
    for(k,ele in wb.eachLinks() ){//遍历所有超链接
        if(string.find(ele.innerHTML,title )){//如果发现超链接名
          ele.click();//自动点击
          break;
      }
  } 
}

//当链接名为A,则执行点击
clickLink("A")

来源: <http://bbs.aau.cn/forum.php?mod=viewthread&action=printable&tid=191>
 

 

aardio窗体相关