首页 > 编程 > HTML > 正文

HTA编辑HOST文件的脚本

2020-01-25 19:40:29
字体:
来源:转载
供稿:网友
一个修改HOST文件的小工具,利用FSO实现,代码比较长,功能也比较多
 
<HTML> 
<HEAD> 
<TITLE>HOSTS 文件编辑器</TITLE> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<meta http-equiv="Content-Language" content="zh-CN"> 
<HTA:APPLICATION ID="hostedit" 
APPLICATIONNAME="hostedit" 
BORDER="thick" 
BORDERSTYLE="normal" 
CAPTION="yes" 
ICON="C:/WINDOWS/system32/rasphone.exe"  
MAXIMIZEBUTTON="yes" 
MINIMIZEBUTTON="yes" 
SHOWINTASKBAR="yes" 
SINGLEINSTANCE="yes" 
SYSMENU="yes" 
VERSION="1.0" 
WINDOWSTATE="normal" /> 
<script language="JScript"> 
window.onerror = function () 

    window.alert("程序发生了未知错误,当前窗口将被关闭!"); 
    window.close(); 
    return true; 

var windowW=450;    //窗体宽 
var windowH=200;    //窗体高 
var canresize=false;//是否可以改变大小 
var windowW2=windowW;//编辑时窗体宽 
var windowH2=200;//编辑时窗体高 
window.resizeTo(windowW,windowH); 
//window.moveTo((screen.width-windowW)/2,(screen.height-windowH)/2); 
window.onresize=function(){if(!canresize)window.resizeTo(windowW,windowH);} 
function init() 

    var ui_table = document.getElementById('UI_TABLE'); 
    var bestHeight = 70+ui_table.scrollHeight; 
    if(bestHeight > screen.height) bestHeight = screen.height; 
    window.resizeTo(windowW, bestHeight); 
    //window.moveTo((screen.width-windowW)/2,(screen.height-bestHeight)/2); 

var hostfile = '//drivers//etc//hosts'; 
function getlist(){ 
    var html=''; 
    var ids=''; 
    var i=1; 
    FSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var spath = FSO.GetSpecialFolder(1)+hostfile; 
    host = FSO.OpenTextFile(spath, 1, false); 
    while(!host.AtEndOfStream){ 
         tmp = host.ReadLine(); 
         if(/^#?/d{1,3}/./d{1,3}/./d{1,3}/./d{1,3}/s+([a-zA-Z0-9/-]+/.[a-zA-Z0-9/-]+(/.(com|net|org|edu|info|biz|cc|tv|gov|mobi|name|cn|en|us|hk|tw))+)$/.test(tmp)) 
         { 
        as=tmp.replace(//s+/,'|:|').split('|:|'); 
        ids+='['+i+'],'; 
        if(/^/#/.test(as[0])){ 
            zt = '外网'; 
            ip = as[0].replace(/^/#/,''); 
            co = '#eee!important'; 
            cz = '<a href="#" style="color:red;" onclick="zh('+i+',0);">切本地</a> | <a href="#" style="color:red;" onclick="ed(this,'+i+');">编辑</a> | <a href="#" style="color:red;" onclick="zh('+i+',2);">删除</a>';

        }else{ 
            zt = '本地'; 
            ip = as[0]; 
            co = '#fff!important'; 
            cz = '<a href="#" onclick="zh('+i+',1);">切外网</a> | <a href="#" style="color:red;" onclick="ed(this, '+i+');">编辑</a> | <a href="#" style="color:red;" onclick="zh('+i+',2);">删除</a>';     
        } 

            html += '<tr><td style="background:'+co+';">'+zt+'</td><td style="background:'+co+';text-align:left;text-indent:6px;">'+as[1]+'</td><td style="text-align:left;text-indent:6px;background:'+co+';">'+ip+'</td><td style="background:'+co+';">'+cz+'</td></tr>'; 
        } 
        i++; 
    } 
    var o=document.getElementById('ids'); 
    o.value=ids; 
    host.Close(); 
    return html; 


function ed(eo, iId){     
    document.getElementById('editId').value=iId; 
    document.getElementById('pIP').value=eo.parentElement.parentElement.children[2].innerText; 
    document.getElementById('pURL').value=eo.parentElement.parentElement.children[1].innerText; 
    document.getElementById('addButt').style.display='none'; 
    document.getElementById('editButt').style.display='inline'; 
    document.getElementById('HostList').style.display='none'; 
    document.getElementById('addHost').style.display='block'; 
    window.resizeTo(windowW2,windowH2); 


function edits(sIp, sUrl){ 
    var oi=document.getElementById(sIp); 
    var ou=document.getElementById(sUrl); 
    if(oi.value=='' || /^/d{1,3}/./d{1,3}/./d{1,3}/./d{1,3}$/.test(oi.value)==false) { 
        alert('IP地址不能为空或你输入的IP格式错误.'); 
        oi.focus(); 
        return; 
    } 
    if(ou.value=='' || /^[a-zA-Z0-9/-]+/.[a-zA-Z0-9/-]+(/.(com|net|org|edu|info|biz|cc|tv|gov|mobi|name|cn|en|us|hk|tw))+$/.test(ou.value)==false) { 
        alert('域名不能为空或你输入的域名格式错误.'); 
        ou.focus(); 
        return; 
    } 
    var iId = document.getElementById('editId').value; 
    var body=''; 
    var i=1; 
    FSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var spath = FSO.GetSpecialFolder(1)+hostfile;     
    host = FSO.OpenTextFile(spath, 1, false); 
    while(!host.AtEndOfStream){ 
        tmp = host.ReadLine(); 
        if(i==iId) 
        { 
            body+=oi.value+"/t"+ou.value+"/n"; 
        } 
        else{ 
            body+=tmp+"/n"; 
        } 
        i++; 
    } 
    host.close(); 
    svf = FSO.OpenTextFile(spath, 2, false); 
    svf.Write(body); 
    svf.close(); 
    window.location.reload(); 


function zh(irs,stype) 

    var body=''; 
    var i=1; 
    FSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var spath = FSO.GetSpecialFolder(1)+hostfile;     
    host = FSO.OpenTextFile(spath, 1, false); 
    while(!host.AtEndOfStream){ 
        tmp = host.ReadLine(); 
        if(i==irs) 
        { 
            if(stype==0){ 
                body+=tmp.replace(/^/#/,''); 
                body+="/n"; 
            }else if(stype==1){ 
                if(/^/#/.test(tmp)){ 
                    body+=tmp+"/n"; 
                }else{ 
                    body+='#'+tmp +"/n"; 
                } 
            }else{ 

            } 
        } 
        else{ 
            body+=tmp+"/n"; 
        } 
        i++; 
    } 
    host.close(); 
    svf = FSO.OpenTextFile(spath, 2, false); 
    svf.Write(body); 
    svf.close(); 
    window.location.reload(); 


function zhall(stype) 

    var body=''; 
    var i=1; 
    var ids1=document.getElementById("ids").value; 
    if(ids1=='') return; 
    FSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var spath = FSO.GetSpecialFolder(1)+hostfile;     
    host = FSO.OpenTextFile(spath, 1, false); 
    while(!host.AtEndOfStream){ 
        tmp = host.ReadLine(); 
        if(stype==0 && ids1.indexOf('['+i+'],')!== -1){ 
            body+=tmp.replace(/^/#/,''); 
            body+="/n"; 
        }else if(stype==1 && ids1.indexOf('['+i+'],')!== -1){ 
            if(/^/#/.test(tmp)){ 
                body+=tmp+"/n"; 
            }else{ 
                body+='#'+tmp +"/n"; 
            } 
        }else{ 
            body+=tmp+"/n"; 
        } 
        i++; 
    } 
    host.close(); 
    svf = FSO.OpenTextFile(spath, 2, false); 
    svf.Write(body); 
    svf.close(); 
    window.location.reload(); 


function AddHosts(sIp, sUrl){ 
    var oi=document.getElementById(sIp); 
    var ou=document.getElementById(sUrl); 
    if(oi.value=='' || /^/d{1,3}/./d{1,3}/./d{1,3}/./d{1,3}$/.test(oi.value)==false) { 
        alert('IP地址不能为空或你输入的IP格式错误.'); 
        oi.focus(); 
        return; 
    } 
    if(ou.value=='' || /^[a-zA-Z0-9/-]+/.[a-zA-Z0-9/-]+/.((net)|(com)|(cn)|(org)|(cc)|(tv))$/.test(ou.value)==false) { 
        alert('域名不能为空或你输入的域名格式错误.'); 
        ou.focus(); 
        return; 
    } 

    FSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var spath = FSO.GetSpecialFolder(1)+hostfile;     
    host = FSO.OpenTextFile(spath, 8, false); 
    host.Write("/n"+oi.value+"/t"+ou.value+"/n"); 
    host.close(); 
    alert('增加域名成功!'); 
    window.location.reload(); 

</script> 
<style> 
body{ 
 background-color:#99CCFF; 

body *{ 
    font-size:12px; 
    margin:0px; 
    padding:0px; 

.BUTT{ 
    BORDER: #2C59AA 1px solid; 
    FONT-SIZE: 12px; 
    COLOR: black; 
    FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#C3DAF5); 
    height:22px; 
    padding: 3px 5px 0px; 
    text-decoration: none; 

.edit{ 
   BORDER: #2C59AA 1px solid; 
   padding:1px; 

#UI_TABLE{ 
    width:99%;cell-spacing:0px; margin:1px; border-collapse:collapse; border:1px solid #7d7d7d; 

#UI_TABLE tr.TopTitle{ 
    text-align:center; 

#UI_TABLE tr.TopTitle td { 
    background-color:#C8E2F7; 

#UI_TABLE tr td{ 
    border:1px solid #7d7d7d;text-align:center;padding:1px; 


</style> 
</HEAD> 
<BODY  onLoad="init()" oncontextmenu="return false;" style="text-align:center; margin:0px;overflow-y:auto;overflow-x:hidden;border:none;background:menu;"> 
<div id="HostList"> 
    <input type="hidden" name="ids"/> 
    <table id="UI_TABLE" > 
        <tr class="TopTitle"> 
            <td>状态</td> 
            <td style="width:140px;">域名</td> 
            <td>IP地址</td> 
            <td style="width:140px;">操作</td>     
        </tr> 
        <script language="javascript" type="text/JavaScript"> 
               document.writeln(getlist()); 
        </script> 
    </table> 
    <div style="margin:6px;text-align:center;"> 
        <input type="button" value="全部切本地" name="b4" onclick="zhall(0);" class="BUTT" />     
        <input type="button" value="全部切外网" name="b5" onclick="zhall(1);" class="BUTT" />     
        <input type="button" value="增加域名" name="b6" onclick="document.getElementById('HostList').style.display='none';document.getElementById('addHost').style.display='block'; window.resizeTo(windowW2,windowH2);" class="BUTT" /> 
    </div> 
</div> 
<div id="addHost" style="display:none;"> 
    <input type="hidden" name="editId" name="editId" /> 
    <div style="text-align:left;margin:30px auto 0px; width:300px;">IP地址:<input type="text" name="pIP" id="pIP" class="edit" />  <input type="button" value="127.0.0.1" name="b2" onclick="document.getElementById('pIP').value='127.0.0.1';" class="BUTT" /></div> 
    <div style="text-align:left;margin:20px auto; width:300px;">域  名:<input type="text" name="pURL" id="pURL" class="edit" /></div> 
    <div style="margin:10px;text-align:center;"> 
        <input type="button" value="提  交" name="b1" id="addButt" onclick="AddHosts('pIp','pURL');" class="BUTT" />     
        <input type="button" value="编  辑" name="b2" id="editButt" style="display:none;" onclick="edits('pIp','pURL');" class="BUTT" />     
        <input type="button" value="返  回" name="b3" onclick="window.location.reload();" class="BUTT" /> 
    </div> 
</div> 


<script> 
//屏蔽部分键盘操作,比如 F5 
function document.onkeydown() 
{wek=window.event.keyCode; 
if((window.event.altKey)&&((wek==37)||(wek==39))) 
{window.alert("Error:Invalid operation!");event.returnValue=false;} 
if((wek==116)||(event.ctrlKey&&wek==82)) 
{window.event.keyCode=0;event.returnValue=false;} 
if((event.ctrlKey)&&(wek==78)) 
event.returnValue=false; 
if((event.shiftKey)&&(wek==121)) 
event.returnValue=false; 
if(window.event.srcElement.tagName=="A"&&window.event.shiftKey) 
window.event.returnValue=false; 
if((window.event.altKey)&&(wek==115)) 
{window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px");return false;} 
if(wek==122){window.event.keyCode=0;window.alert("Error:Invalid operation!");return false;} 

</script> 
</BODY> 
</HTML> 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表