2009年11月27日 星期五

XMLDOM下載者生成器(xmldown.hta)

以下代碼保存成hta文件,可生成js和vbs下載者


<HTA:APPLICATION
    ID="xmldown"
    Caption="yes"
    SCROLL="auto"
     border="none"
     borderStyle="static"
     SINGLEINSTANCE="yes"
     maximizebutton="no"
     BORDER="no"
     icon="dxdiag.exe">
<script language=vbs>

Sub Window_onLoad
    window.resizeTo screen.width/1.6,screen.height/3
    window.moveTo 200,200

End Sub

Sub CreateXml(path,File)
  
    Set objStream = CreateObject("ADODB.Stream")
    objStream.Type = 1
    objStream.Open()
    objStream.LoadFromFile(Path)
    objStream.position = 0
   
Set XmlDoc = CreateObject("Microsoft.XMLDOM")
    XmlDoc.async = False
    Set Root = XmlDoc.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
    XmlDoc.appendChild(Root)
    XmlDoc.appendChild(XmlDoc.CreateElement("root"))
    Set Xfile = XmlDoc.SelectSingleNode("//root").AppendChild(XmlDoc.CreateElement("file"))
    Set Xstream = Xfile.AppendChild(XmlDoc.CreateElement("stream"))
    Xstream.SetAttribute "xmlns:dt", "urn:schemas-microsoft-com:datatypes"
    Xstream.dataType = "bin.base64"
    Xstream.nodeTypedValue = objStream.Read()
    XmlDoc.Save(File)
    Set XmlDoc = Nothing
Set Root = Nothing
    Set objStream=Nothing
   
   
End Sub

Function x(obj)
Set x=document.getElementById(obj)
End function

Function Findfile(str)
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(str) Then
findfile=true
Else
findfile=false
End If
End Function

Function jsdown()
Set FSO = CreateObject("Scripting.FileSystemObject")
with fso.opentextfile((CreateObject("WScript.Shell")).CurrentDirectory&"\jsdown.js",2,true)
.write x("jsdown").value
end with
end function

Function vbsdown()
Set FSO = CreateObject("Scripting.FileSystemObject")
with fso.opentextfile((CreateObject("WScript.Shell")).CurrentDirectory&"\vbsdown.vbs",2,true)
.write x("vbsdown").value
end with
end function
</script>
<body>
<h4>1.生成下載用的xml文件</h4>
選擇下載的exe文件:<input type=file name="file1" id="file1" size="20">
保存路徑 <input type=text name="path" id="pathname" value="c:\down.xml" size="20">
<input type="button" value="生成xml文件" onclick='vbs:CreateXml x("file1").value,x("pathname").value:If Findfile(x("pathname").value) = true Then msgbox("生成成功,請傳到某個空間"):x("url").innerHTML="<font color=red>生成成功,請傳到某個空間</font>"'> <br>
<h4>2.生成下載者</h4>
<button onclick='vbs:jsdown():If Findfile("jsdown.js") = true Then msgbox "生成成功":x("url").innerHTML="用法是cscript jsdown.js xmlurl savepath"' >生成js下載者</button><button onclick='vbs:vbsdown():If Findfile("vbsdown.vbs") = true Then msgbox "生成成功":x("url").innerHTML="<font color=blue>用法是cscript vbsdown.js xmlurl savepath</font>"'>生成vbs下載者< /button><br><br><br><br>
<div id="url"></div>

<textarea style="visibility:hidden" name=jswodn id=jsdown rows="1" cols="1">
var objArgs = WScript.Arguments;
var objXmlFile =new ActiveXObject("Microsoft.XMLDOM");
objXmlFile.async=false;
objXmlFile.load(objArgs(0).toLowerCase());
do
{
WScript.sleep(100);
}
while (!objXmlFile.readyState == 4)

if (objXmlFile.readyState == 4)
{
var objStream = new ActiveXObject("ADODB.Stream")
var objNodeList =objXmlFile.getElementsByTagName("stream")[0].nodeTypedValue

with(objStream)
{
objStream.Type = 1;
objStream.Open();
objStream.Write(objNodeList);
objStream.SaveToFile(objArgs(1).toLowerCase(),2);
objStream.close();
     }
}

delete objXmlFile;
delete objStream;

</textarea>

<textarea style="visibility:hidden" name=vbswodn id=vbsdown rows="1" cols="1">
Set objXmlFile = CreateObject("Microsoft.XMLDOM")
objXmlFile.async=false
objXmlFile.load(Wscript.arguments(0))
Do While objXmlFile.readyState<>4
wscript.sleep 100
Loop
If objXmlFile.readyState = 4 Then

Set objNodeList = objXmlFile.documentElement.selectNodes("//file/stream")
Set objStream = CreateObject("ADODB.Stream")
     With objStream
      .Type = 1
      .Open
      .Write objNodeList(0).nodeTypedvalue
      .SaveToFile Wscript.arguments(1), 2
      .Close
     End With
Set objStream = Nothing

End If
   
Set objXmlFile = Nothing
</textarea>
</body>


註: 本文轉載自網路 非原創
轉載自 teN.potgnayiaH.wwW vbs小鋪  原文