今天学习了光庆的虚表find 借花献佛写一个程序守护

dzkaiwen 3月前 368

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
)


最新回复 (1)
  • 光庆 2月前
    0 2

返回