请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
查看: 1281|回复: 5

帮忙加线程操作、批量等几个功能

[复制链接]
任务统计:
发布数/完成数/奖励数:
1/1/500
参与数/承接数/收入数:
0/0/0

2

主题

6

帖子

8

积分
交易币
72

新手入门

Rank: 1

发表于 2016-1-28 10:04:33 | 显示全部楼层 |阅读模式
软件开发
是否需要源码: 需要
是否公开答案: 不公开
下单方: weiqunxing
QQ: 只允许登录用户才可查看!
手机或电话: 只允许登录用户才可查看!
目前是一个单个域名Whois查询的软件,需要修改几个功能:


1. 批量查询和单个查询都用线程来完成。(目前单个查询如果网络不好的情况下,软件会卡住)。
2. 增加Menu菜单,增加批量导入查询功能,导入txt文档(每行一个域名)。
   导入后listview列表框显示所有域名,然后上方可以设置每次操作线程、每次查询间隔时间,然后开始、停止。
   批量导入列表,开始后,listview实时更新查询完成的域名数据,进行下去,直到结束。
   最下方状态栏实时更新查询进度。
3. listview多域名或批量查询域名时,已查询成功的域名,点击listview里域名行,下方WhoisData框中显示当前域名Whois详细数据。
4. 查询过程中和结束后可以实时排序显示listview结果(每列都需要排序功能)。
5. 增加查询错误和超时的判断,例如超过30秒没有返回正确的数据则进行下一个,当前域名的listview里“注册状态”标注为“查询失败”。
6. 查询完成后,通过Menu可以将listview结果导出txt或excel文档。


如有疑问可以加我QQ详聊,QQ:①③731②⑤


[aardio] 纯文本查看 复制代码
import win.ui;
import web.form;
/*DSG{{*/
var winform = ..win.form(text="域名查询";right=1024;bottom=768;parent=...;scroll=1)
winform.add(
DomainName={cls="edit";text="test.gg";left=10;top=10;right=565;bottom=40;dl=1;dr=1;dt=1;edge=1;font=LOGFONT( name='微软雅黑';h=-14 );tabstop=1;z=7};
CheckButton={cls="button";text="查询";left=575;top=10;right=655;bottom=40;dr=1;dt=1;font=LOGFONT( name='微软雅黑';h=-14 );z=2};
CheckThread={cls="edit";text="1";left=665;top=10;right=695;bottom=40;dl=1;dr=1;dt=1;edge=1;font=LOGFONT( name='微软雅黑';h=-14 );tabstop=1;z=6};
ThreadText={cls="static";text="线程";left=705;top=13;right=735;bottom=40;align="center";font=LOGFONT( name='微软雅黑';h=-14 );transparent=1;z=8};
CheckDelay={cls="edit";text="1000";left=745;top=10;right=795;bottom=40;dl=1;dr=1;dt=1;edge=1;font=LOGFONT( name='微软雅黑';h=-14 );tabstop=1;z=6};
MSText={cls="static";text="毫秒";left=804;top=13;right=834;bottom=40;align="center";font=LOGFONT( name='微软雅黑';h=-14 );transparent=1;z=8};
BulkStart={cls="button";text="开始";left=844;top=10;right=924;bottom=40;dr=1;dt=1;font=LOGFONT( name='微软雅黑';h=-14 );z=3};
BulkStop={cls="button";text="停止";left=934;top=10;right=1014;bottom=40;dr=1;dt=1;font=LOGFONT( name='微软雅黑';h=-14 );z=4};
listview={cls="listview";left=10;top=50;right=1014;bottom=290;bgcolor=16777215;dl=1;dr=1;dt=1;edge=1;font=LOGFONT( name='微软雅黑';h=-14 );fullRow=1;gridLines=1;z=1};
WhoisData={cls="richedit";left=10;top=300;right=1014;bottom=728;db=1;dl=1;dr=1;dt=1;edge=1;font=LOGFONT( name='微软雅黑' );hscroll=1;link=1;multiline=1;readonly=1;vscroll=1;wrap=1;z=5}
DomainTotalText={cls="static";text="域名总数:8000 个";left=394;top=738;right=594;bottom=758;align="right";font=LOGFONT( name='微软雅黑';h=-14 );transparent=1;z=8};
CheckSuccess={cls="static";text="查询成功:56 个";left=604;top=738;right=804;bottom=758;align="right";font=LOGFONT( name='微软雅黑';h=-14 );transparent=1;z=8};
CheckFailed={cls="static";text="查询失败:0 个";left=814;top=738;right=1014;bottom=758;align="right";font=LOGFONT( name='微软雅黑';h=-14 );transparent=1;z=8};
)
/*}}*/
 
import util;
 
listviewColorize = (function () {
    var NMLVCUSTOMDRAW = class {
        struct nmcd = {
            struct hdr = ..win.ui.NMHDR();
            INT dwDrawStage;
            pointer hdc;
            struct rc = ::RECT();
            int dwItemSpec;
            INT uItemState;
            int lItemlParam;
        };
        INT clrText;
        INT clrTextBk;
        INT font;
        int iSubItem;
        INT dwItemType;
        INT clrFace;
        int iIconEffect;
        int iIconPhase;
        int iPartId;
        int iStateId;
        struct rcText = ::RECT();
        INT uAlign;
    }
     
    return function (listview) {
        listview._colors1 = ..table.array(listview.count, 0);
        listview._colors2 = ..table.array(listview.count, 0);
        listview.onnotify = function (id,code,ptr) {
            if (code === 0xFFFFFFF4/*_NM_CUSTOMDRAW*/) {
                var nmlvcd = NMLVCUSTOMDRAW();
                raw.convert(ptr, nmlvcd);
                 
                select (nmlvcd.nmcd.dwDrawStage) {
                    case 0x1/*_CDDS_PREPAINT*/ {
                        return 0x20/*_CDRF_NOTIFYITEMDRAW*/
                    }    
                    case 0x10001/*_CDDS_ITEMPREPAINT*/ {
                        raw.mixin(ptr, nmlvcd, { clrText = owner._colors1[nmlvcd.nmcd.dwItemSpec +1 ] });
                        raw.mixin(ptr, nmlvcd, { clrTextBk = owner._colors2[nmlvcd.nmcd.dwItemSpec +1 ] });
                        return 0/*_CDRF_DODEFAULT*/;
                    }
                }
            }
        }
         
        listview.setItemColor = function (item, col) {
            owner._colors1[item] = col;
        }
        listview.setItemColorBk = function (item, col) {
            owner._colors2[item] = col;
        }
        listview.addItem = ..util.connect(listview, listview.addItem,
            function (text, ind, ...) {
                if (ind)
                    ..table.insert(owner._colors1, 0, ind);
                else
                    ..table.push(owner._colors1, 0);
            }
        );
         
        listview.delItem = ..util.connect(listview, listview.delItem,
            function (item) {
                ..table.remove(owner._colors1, item);
            }
        );
    }
})();
/*}}*/
 
listviewColorize(winform.listview);
 
 
winform.show();
winform.DomainName.setFocus();
 
 
 
winform.isDialogMessage = function(hwnd,msg){  
    if (   (msg.message >= 0x100/*_WM_KEYFIRST*/) && (msg.message <= 0x108/*_WM_KEYLAST*/) ) { 
        if(msg.wParam==0xD/*_VK_ENTER*/){ 
            return false //使回车键不是对话框快捷键
        }
    }   
    return win.isDialogMessage(hwnd,msg);   
}
 
winform.DomainName.wndproc = function(hwnd,message,wparam,lparam){
    select(message) {//判断消息类型
 
        case 0x100/*_WM_KEYDOWN*/ {
            if(wparam == 0xD/*_VK_RETURN*/ or wparam == 0x20/*_VK_SPACE*/){
                winform.CheckButton.oncommand();
            }
        }
    }
    //无返回值则继续调用默认回调函数
}
 
 
 
 
winform.listview.insertColumn("域名",120,2);
winform.listview.insertColumn("注册状态",80,3);
winform.listview.insertColumn("域名状态",80,4);
winform.listview.insertColumn("注册日期",100,5);
winform.listview.insertColumn("注册人",180,6);
winform.listview.insertColumn("注册商",180,7);
winform.listview.insertColumn("DNS",180,8);
 
 
 
 
 
winform.CheckButton.oncommand = function(id,event){
    Domain = winform.DomainName.text;
    //WhoisServer = winform.WhoisServer.text;
    import wsock.tcp.client;
    var WhoisServer = "whois.gg";
    var tcpClient = wsock.tcp.client();
    tcpClient.connect(WhoisServer,43);
    tcpClient.write(Domain++'\r\n');
    WhoisInfo = tcpClient.readAll();
    WhoisInfo = string.fromto(WhoisInfo);
    //Registrant = string.replace(Registrant,"%     ","")
    if(string.find(WhoisInfo,"NOT FOUND")){    
        RegStatus = "未注册";
        item = winform.listview.addItem({Domain;RegStatus;});
        winform.listview.setItemColor(item, 0x0000FF);
        //winform.listview.setItemColor(RegStatus, 0x0000FF);
        //winform.listview.setItemColor(RegStatus, 0x0000FF);
    }else if(string.find(WhoisInfo,"Registered on")){
        RegStatus = "已注册";
        DomainStatus = string.match(WhoisInfo,"Status\:\n(.*?)\n");
        DomainStatus = string.replace(DomainStatus," ","");
         
        select(DomainStatus){
            case "Active"{
                DomainStatus = "正常";
            }
            case "ST_CL_TRANSFERPROHIBITED"{
                DomainStatus = "禁止转移";
            }
        }
         
        //DomainStatus = string.replace(DomainStatus,"Active","正常");
        //DomainStatus = string.replace(DomainStatus,"ST_CL_TRANSFERPROHIBITED","禁止转移");
        //DomainStatus = ex?(ex?"Active":"正常"):(ex?"TRANSFERPROHIBITED":"禁止转移");
        Registrant=string.match(WhoisInfo,"Registrant\:\n     (.*?)\n");
        Registrar=string.match(WhoisInfo,"Registrar\:\n     (.*?) ");
        RegDate=string.match(WhoisInfo,"Registered on (.*?)\n");
        /* 格式化时间 开始 */
        setlocale("time","enu");
        var RegDate = time(RegDate, "%dth %B %Y");
        RegDate.format="%Y-%m-%d";
        RegDate = tostring(RegDate);
        /* 格式化时间 结束 */
        DNS=string.match(WhoisInfo,"Name servers\:\n     (.*?)\n");
         
        winform.listview.addItem({Domain;RegStatus;DomainStatus;RegDate;Registrant;Registrar;DNS});
         
    }else{
        RegStatus = "出错";
        winform.listview.addItem({Domain;RegStatus});
    }
     
    winform.WhoisData.text = WhoisInfo;
    tcpClient.close();
}
 
 
win.loopMessage();
return winform;

回复

使用道具 举报

任务统计:
发布数/完成数/奖励数:
0/0/0
参与数/承接数/收入数:
3/3/580

0

主题

10

帖子

17

积分
交易币
579

新手入门

Rank: 1

发表于 2016-1-29 01:46:22 | 显示全部楼层
此帖仅作者可见

使用道具 举报

任务统计:
发布数/完成数/奖励数:
1/1/500
参与数/承接数/收入数:
0/0/0

2

主题

6

帖子

8

积分
交易币
72

新手入门

Rank: 1

 楼主| 发表于 2016-1-29 11:06:35 | 显示全部楼层
此帖仅作者可见

使用道具 举报

任务统计:
发布数/完成数/奖励数:
0/0/0
参与数/承接数/收入数:
3/3/580

0

主题

10

帖子

17

积分
交易币
579

新手入门

Rank: 1

发表于 2016-1-29 11:40:43 | 显示全部楼层
此帖仅作者可见

使用道具 举报

任务统计:
发布数/完成数/奖励数:
1/1/500
参与数/承接数/收入数:
0/0/0

2

主题

6

帖子

8

积分
交易币
72

新手入门

Rank: 1

 楼主| 发表于 2016-1-29 12:37:54 | 显示全部楼层
此帖仅作者可见

使用道具 举报

任务统计:
发布数/完成数/奖励数:
0/0/0
参与数/承接数/收入数:
3/3/580

0

主题

10

帖子

17

积分
交易币
579

新手入门

Rank: 1

发表于 2016-1-29 22:52:32 | 显示全部楼层
此帖仅作者可见

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



GMT+8, 2018-8-19 08:01 , Processed in 0.109375 second(s), 90 queries .

© 2001-2011 Powered by Discuz! X3.2.

快速回复 返回顶部 返回列表