aardio 文档
aardio 范例: ping
import win.ui;
import fonts.fontAwesome;
/*DSG{{*/
var winform = win.form(cls="PING_FORM";text="PING测试";right=599;bottom=399;max=false;min=false)
winform.add(
listbox={cls="listbox";left=7;top=8;right=590;bottom=388;bgcolor=0xFFFFFF;db=1;dl=1;dr=1;dt=1;edge=1;items={};ownerDraw=1;z=1};
loading={cls="plus";left=461;top=298;right=552;bottom=372;bgcolor=0xFFFFFF;clipBk=false;font=LOGFONT(h=-29;name='FontAwesome');z=2}
)
/*}}*/
//设定自绘每行的高度
winform.listbox.onMeasureItem = function(measureItem){
measureItem.itemHeight = winform.listbox.dpiScale(16);
}
//自绘列表项
winform.listbox.onDrawItem = function(drawItem){
var text = winform.listbox.getItemText( drawItem.itemID + 1 )
::SetTextColor(drawItem.hDC,winform.listbox.ipColors[drawItem.itemID + 1] );
::DrawText(drawItem.hDC,text,#text,drawItem.rcItem,0x20/*_DT_SINGLELINE*/);
}
winform.show();
winform.listbox.ipColors = {};
winform.listbox.addIp = function(clr,ip,label){
winform.listbox.add( ip + ": " + (label || "Failed") )
winform.listbox.ipColors[winform.listbox.count] = clr
}
//线程启动函数
var pingThread = function( ip,winform ) {
import icmp.ping; //线程内使用的库必须在线程内导入
var ping = icmp.ping(); //创建 PING 工具(基于系统 API 函数 IcmpSendEcho ),
for(i=1;4;1){
if( ping.perform(ip) ){
winform.listbox.addIp(0xF00,ip,string.format( "Reply from %s: bytes=%d time=%dms TTL=%d"
, ping.ip , #ping.requestData , ping.echoReply.roundTripTime , ping.echoReply.options.ttl ) );
return ping.echoReply; //此返回值由 manage.waitClose 函数作为调用 onEnd 回调函数的 echoReply 参数。
}
sleep(10)
}
winform.listbox.addIp(0x0f0,ip)
}
import thread.manage;
manage = thread.manage(3)
manage.createSuspended(pingThread,"www.example.com",winform).onEnd = function(echoReply){
//线程执行完回调此函数
}
manage.createSuspended(pingThread,"www.aardio.com",winform).onEnd = function(echoReply){
//线程执行完回调此函数
}
//在文本框右下角显示加载进度动画。
winform.loading.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250'}
manage.waitClose(); //等待所有线程结束,必须调用此函数才能在线程结束时触发前面指定的 onEnd 回调。
winform.loading.disabledText = null;
win.loopMessage();
Markdown 格式