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

 找回密码
 立即注册
查看: 843|回复: 0

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

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

2

主题

6

帖子

8

积分
交易币
72

新手入门

Rank: 1

发表于 2016-1-27 13:48:12 | 显示全部楼层 |阅读模式
软件开发
是否需要源码: 需要
是否公开答案: 不公开
下单方: 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;

回复

使用道具 举报

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

本版积分规则



GMT+8, 2018-5-26 12:09 , Processed in 0.078125 second(s), 35 queries .

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

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