import win.ui;
import godking.vlistEx
/*DSG{{*/
mainForm = win.form(text="进程守护器";right=500;bottom=247)
mainForm.add(
listview={cls="vlistEx";left=3;top=4;right=491;bottom=199;edge=1;z=1}
)
/*}}*/
import wsock.udp.asynClient;
var udpServer = wsock.udp.asynClient();
import console
//允许广播
udpServer.setBroadcast(true);
//同一套接字不能重复绑定。
udpServer.bind("0.0.0.0", 1000);
//收到数据触发,err 为错误信息(无错误为 null)
udpServer.onReceive = function(err) {
var str = udpServer.recvfrom(1024);
var num = mainForm.listview.find(str, 1 /*开始行*/ , /*结束行*/ , 1 /*查询列*/ , true /*全部*/ , true /*模糊*/ )
if (!num) {
mainForm.listview.insertRow(, str, time.now(), 0)
}
else {
mainForm.listview.setCellText(num[1].row, 2, time.now())
}
//console.varDump(num[1].row)
}
mainForm.listview.insertColumn("程序名称", 200 /*列宽*/ , /*位置*/ , /*格式*/ )
mainForm.listview.insertColumn("时间", 150 /*列宽*/ , /*位置*/ , /*格式*/ )
mainForm.listview.insertColumn("次数", 50 /*列宽*/ , /*位置*/ , /*格式*/ )
mainForm.setInterval(
function() {
var tm = time.now();
var listnum = mainForm.listview.count;
for (i = 1; listnum; 1) {
var c = tm.diffsecond(mainForm.listview.getText(i, 2, false));
var num = mainForm.listview.getText(i, 3, false);
if (c > 9) {
num++
mainForm.listview.setCellText(i, 3, num)
//process(aa.exe)//写要启动的文件
}
console.log(num, "处理时间", c)
}
}, 1000
)
mainForm.show();
return win.loopMessage();
要守护的程序直接发送UDP广告自己的程序名字就可以了。
winform.setInterval(
function() {
//创建客户端套接字
var udpClient = wsock.udp.client();
//允许广播
udpClient.setBroadcast(true);
//发送数据
udpClient.sendto("test.exe", "255.255.255.255", 1000);
}, 1000
)