//管道　DOS命令行窗口化
import win.ui;
import win.ui.menu;
import process.popen;
/*DSG{{*/
var winform = win.form(parent=...; text="GUI CMD DOS命令行窗口化工具";right=481;bottom=342 )
winform.add( 
button={ dr=1;bottom=332;right=386;left=312;top=308;font=LOGFONT( name='宋体' );z=1;db=1;text="运行";cls="button" };
editCon={ dr=1;dl=1;vscroll=1;right=466;left=11;dt=1;db=1;cls="richedit";link=1;text="本程序源代码请到 http://www.aau.cn 获取";multiline=1;top=29;font=LOGFONT( name='宋体' );z=2;hscroll=1;edge=1;bottom=299 };
btnCls={ dr=1;bottom=332;right=465;left=391;top=308;font=LOGFONT( name='宋体' );z=5;db=1;text="清屏";cls="button" };
editCmd={ dr=1;dl=1;bottom=332;right=296;left=64;top=308;font=LOGFONT( name='宋体' );z=4;db=1;text="dir c:\";edge=1;cls="edit" };
static={ dl=1;bottom=328;align="center";right=58;left=11;color=0;top=312;font=LOGFONT( name='宋体';h=-14 );transparent=1;db=1;text="命令：";z=3;cls="static" }
)
/*}}*/

onMenu = function(id){
    var str = winform.menu.getString(id,0x0/*_MF_BYCOMMAND*/);
    str = string.replace(str,"\S+\s*$","")
    winform.editCmd.text = str;
} 
  
var menu = win.ui.menu(winform);//创建主菜单  
menu.add( "DOS命令",{
	{ "ver 显示版本信息";onMenu  };  
	{ "regedit /s 注册表文件名 导入注册表";onMenu  }; 
	{ "regedit /e 注册表文件名 导出注册表";onMenu  }; 
	{ "cacls 文件名 查看文件的访问用户权限列表 ";onMenu  };
	{ "set 环境变量名称=要指派的值 设置环境变量 ";onMenu  };
	{ "set 显示当前所有的环境变量";onMenu  }; 
	{ "set p 显示出当前以字符p开头的所有环境变量";onMenu  };  
	{ "echo 信息 在屏幕上显示出信息";onMenu  }; 
} )
menu.add( "网络命令", {
		{ "net"; {
			{ "use"; {
				{"use \\ip\ipc$ "" "" /user:"" "" 建立IPC空链接";onMenu  };
				{"use \\ip\ipc$ ""密码"" /user:""用户名"" 建立IPC非空链接";onMenu  };
				{"use h: \\ip\c$ ""密码"" /user:""用户名"" 直接登陆后映射对方C：到本地为H:";onMenu  };
				{"use h: \\ip\c$ 登陆后映射对方C：到本地为H:";onMenu  };
				{"use \\ip\ipc$ /del 删除IPC链接";onMenu  };
				{"use h: /del 删除映射对方到本地的为H:的映射";onMenu  };
			} }
			
			{"账户"; {
				{"password 密码 更改系统登陆密码";onMenu  };
				{"user guest 12345 用guest用户登陆后用将密码改为12345";onMenu  };
				{"user 用户名　密码　/add 建立用户";onMenu  };
				{"user guest /active:yes 激活guest用户";onMenu  };
				{"user 查看有哪些用户";onMenu  };
				{"user 帐户名 查看帐户的属性";onMenu  };
				{"localgroup administrators 用户名 /add 把“用户”添加到管理员中使其具有管理员权限";onMenu  };
			} }
			
			{"共享"; {
				{"share 查看本地开启的共享";onMenu  };
				{"share ipc$ 开启ipc$共享";onMenu  };
				{"share ipc$ /del 删除ipc$共享";onMenu  };
				{"share c$ /del 删除C：共享";onMenu  };
				{"view 查看本地局域网内开启了哪些共享 ";onMenu  }; 
				{"view \\ip 查看对方局域网内开启了哪些共享";onMenu  }; 
				{"logoff 断开连接的共享";onMenu  };
			} }
			
			{"NT服务"; {
				{"start 查看开启了哪些服务";onMenu  };
				{"start 服务名　 开启服务";onMenu  }; 
				{"stop 服务名 停止某服务";onMenu  };  
				{"pause 服务名 暂停某服务";onMenu  }; 
			} }
			
			{"时间"; {
			{"time \\目标ip 查看对方时间";onMenu  }; 
			{"time \\目标ip /set 同步时间";onMenu  }; 
			{"time \\目标ip /set /yes 同步时间并取消确认";onMenu  }; 
		 	
			} }
		}}
		{"netstat"; {
			{"netstat -a 查看开启了哪些端口";onMenu  };
			{"netstat -n 查看端口的网络连接情况，";onMenu  };
			{"netstat -an 查看端口";onMenu  };
			{"netstat -v 查看正在进行的工作";onMenu  };
			{"netstat -p 协议名 查看某协议使用情况";onMenu  };
			{"netstat -p tcq/ip 查看tcp/ip协议使用情况";onMenu  } 
			{"netstat -s 查看正在使用的所有协议使用情况";onMenu  } 
			{"nbtstat -A ip 看对方最近登陆的用户名";onMenu  }
		} }
		{"nbtstat"; {  
			{"nbtstat -A ip 看对方最近登陆的用户名";onMenu  }
		} }
		{"send ip ""文本信息"" 向对方发信息";onMenu  }; 
		{"config 显示系统网络设置";onMenu  }; 
		{"ver 局域网内正在使用的网络连接类型和信息";onMenu  }; 
		{"tracert -参数 ip 跟踪路由";onMenu }
		{"ping ip(或域名) 向对方主机发送默认大小为32字节的数据";onMenu  }
		{"ipconfig /al 显示全部网卡配置信息";onMenu  };
		{"telnet ip 端口 远程登陆服务器";onMenu  } 
		{"netsh 查看或更改本地网络配置情况";onMenu  }
		{"arp -a 查看全部ARP缓存";onMenu  }
} )
menu.add( "文件命令", {
		{"dir 查看文件";onMenu  }
		{"dir /Q 显示文件及目录属系统哪个用户";onMenu  }
		{"dir /T:C 显示文件创建时间，";onMenu  }
		{"dir /T:A 显示文件上次被访问时间，";onMenu  }
		{"dir /T:W 上次被修改时间 ";onMenu  }
		{"attrib 文件名(目录名) 查看某文件（目录）的属性 ";onMenu  } 
		{"attrib 文件名 -A -R -S -H H 去掉某文件的存档，只读，系统，隐藏属性";onMenu  }
		{"attrib 文件名 +A +R +S +H 添加某文件的存档，只读，系统，隐藏属性";onMenu  }
		{"del -F 文件名 加-F参数后就可删除只读文件";onMenu  }
		{"del -F 文件名 /AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件";onMenu  }
		{"del -F /A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件";onMenu  } 
		{"DEL/A-S *.*  删除当前目录下除系统文件以外的所有文件";onMenu  }
		{"del /S /Q 目录 删除目录及目录下的所有子目录和文件";onMenu  }
		{"rmdir /s /Q 目录 /S 删除目录及目录下的所有子目录和文件 ";onMenu  } 
		{"move 要移动的文件名　存放移动文件的路径 移动文件 ";onMenu  }
		{"fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中 ";onMenu  }
		{"copy 路径\文件名1　路径\文件名2 /y 复制文件1到指定的目录为文件2";onMenu  } 
		{"copy c:\srv.exe \\ip\admin$ 复制本地c:\srv.exe到对方的admin下 ";onMenu  }
		{"cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件";onMenu  } 
		{"copy \\ip\admin$\*.* c:\   复制对方admini$共享下的所有文件至本地C： ";onMenu  }
		{"xcopy 要复制的文件或目录 ";onMenu  }
		{"for 对一组文件中的每一个文件执行某个特定命令 ";onMenu  }
		{"findstr ""Hello"" aa.txt 在aa.txt文件中寻找字符串hello";onMenu  } 
		{"find 文件名 查找某文件 ";onMenu  }
		{"format 盘符 /FS:类型 格式化磁盘";onMenu  } 
		{"md　目录名 创建目录 ";onMenu  }
		{"replace 源文件　要替换文件的目录 替换文件 ";onMenu  }
		{"ren 原文件名　新文件名 重命名文件名";onMenu  } 
		{"tree 以树形结构显示出目录 ";onMenu  }
		{"tree -f 将列出第个文件夹中文件名称 ";onMenu  }
		{"type 文件名 显示文本文件的内容";onMenu  } 
		{"more 文件名 逐屏显示输出文件";onMenu  } 
} )
menu.add( "IIS服务命令", { 
		{"iisreset /reboot 重启win2k";onMenu  }  
		{"iisreset /start 启动Internet服务";onMenu  } 
		{"iisreset /start 停止Internet服务";onMenu  } 
		{"iisreset /restart 重新启动Internet服务";onMenu  } 
		{"iisreset /status 显示Internet服务状态 ";onMenu  } 
		{"iisreset /enable  启用Internet服务的重新启动";onMenu  } 
		{"iisreset /disable 禁用Internet服务的重新启动";onMenu  }
		{"iisreset /rebootonerror 当启动、停止或重新启动Internet服务时，若发生错误将重新开机 ";onMenu  } 
		{"iisreset /noforce 若无法停止Internet服务，将不会强制终止Internet服务 ";onMenu  }  
} )
menu.add( "设置", { 
	{"自动清屏";
		function(id){
			winform.autoCls = !winform.menu.checked(id,0)
			winform.menu.check(id,winform.autoCls,0) 
		}
	}    
} )
 
import win.path;
//生成命令行参数
getCmdParameters = function(){
    //下面我们创建进程 
    var cmd = string.trim( winform.editCmd.text );
    var tcmd = string.split(cmd," " );
    var exeFile;
    if(tcmd[1]){
    	exeFile = win.path.search( tcmd[1] + ".exe") ||  win.path.search( tcmd[1] + ".com")  
    }
    
    var prcs;
    if( ! exeFile){
    	return "cmd.exe /c " + cmd;
    }
    else {
    	tcmd[1] = exeFile;
    	return string.join(tcmd," ");
    } 
}

winform.button.oncommand = function(id,event){ 
	if( winform.autoCls ){
		winform.btnCls.oncommand();
	}
	 
    //下面我们创建进程  
    var prcs = process.popen( ,getCmdParameters() ) ;  
    
    //读取一行
    line = prcs.read();
    while(line){
        winform.editCon.setsel(-1,-1);
        line= string.trim(line,'\r\n')
        winform.editCon.selText = line+'\n';
        win.delay(1);//产生进度的效果
        line =  prcs.read();
    }

}

winform.btnCls.oncommand = function(id,event){ 
    winform.editCon.text = "" 
} 

winform.show() 
win.loopMessage();


