import win; //必须首先导入win窗口支持库 import win.ui; /*DSG{{*/ var winform = win.form(parent=...; min=1;bottom=249;max=1;text="NOD32升级帐号获取 ";right=349 ) winform.add( button={ bottom=230;text="获取";left=33;right=156;top=201;font=LOGFONT( name="宋体";h=-12 );z=0;cls="button" }; edit={ bottom=187;right=340;left=9;multiline=1;top=20;font=LOGFONT( name="宋体";h=-12 );z=1;text="";edge=1;cls="edit" } ) /*}}*/ //变量名应清晰准确的表达函数的意图 //AAuto变量首字母小写,从第二个单词开始首字符大写,外部对象(API、COM)首字母大写 getNod32 = function() begin //函数也可以使用可折叠语句块 import inet.http; import string.ex; var http = inet.http() var ti = time.now() ti.format="http://naoz.cn/NOD32/nod32-id-%Y%m%d-upgrade/"; //转换成当前日期并下载网页 var html=http.down( tostring(ti) ) http.close(); var str2="" if(html){ html = string.fromto(html); for m,m2 in string.gmatch(html ,"(%:/<)%b码(%:/<)") { var str="id"+string.trimright(m,'<')+" 密码"+string.trimright( m2,'<') //取出的字符串再去除尾部 str2 =str2+'/r/n' + str } str2=string.ex.distinct(str2,'/r/n')//去除在回复中的重复项 thread.set("NODID", str2) //如果要加入列表框,可以改成数组的存取,再加入列表框 } return 123; end; winform.button.oncommand = function(id,event){ //禁用按钮,避免重入 winform.button.text = "请稍候" winform.button.disabled = true; winform.edit.text = ""; //创建并启动后台线程 h = thread.create(getNod32) while( ! thread.get("NODID") ){ //如果没有查询到结果,执行delay以响应消息 win.delay(200) winform.edit.text ++= "." } winform.edit.text = thread.get("NODID") thread.set("NODID",null) //清空线程变量 winform.button.text ="获取" winform.button.disabled = false; }//endproc winform.show(true) win.loopMessage(); 转自:http://www.ecranesoft.com/bbs/showtopic-8422.aspx