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

dzkaiwen 10月前 846

Code AardioLine:59复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
    • 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广告自己的程序名字就可以了。


    Code AardioLine:12复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
    • winform.setInterval(
    • function() {
    • //创建客户端套接字
    • var udpClient = wsock.udp.client();
    • //允许广播
    • udpClient.setBroadcast(true);
    • //发送数据
    • udpClient.sendto("test.exe", "255.255.255.255", 1000);
    • }, 1000
    • )


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

    返回