javascript HierarchicalTaskAnalysis-hta编程(.hta)
main.hta code:
1 <script>window.resizeTo(400,300);</script> 2 <head> 3 4 <hta:application 5 6 id=myApplication 7 applicationName=myMusic 8 singleInstance=yes 9 scroll=yes 10 innerborder=no 11 icon=app.ico 12 selection=yes 13 version=1 14 navigable=yes 15 caption=yes 16 contextMenu=no 17 18 > 19 20 <style> 21 22 </style> 23 24 </head> 25 26 <body> 27 <p id="pId">hello Hierarchical Task Analysis</p> 28 </body> 29 30 <script> 31 32 /** hta config: 33 APPLICATION 34 内容是否是HTA,免除安全模式。 35 36 applicationName 37 此属性为设置HTA的名称。 38 39 singleInstance 40 此属性为设置是否此应用程序同时只能运行一次。次属性以 applicationName 属性作为标识,默认值为 no。 41 42 border 43 此属性为设置为HTA的窗口边框类型,默认值为 thick 44 它可以设为 45 thick 指定窗口为粗边框 46 dialog window 指定窗口为对话框 47 none 指定窗口无边框 48 thin 指定窗口为窄边框 49 borderStyle 50 此属性为设置HTA窗口的边框格式,默认值为 normal。 51 它可以设为 52 normal 普通边框格式 53 complex 凹凸格式组合边框 54 raised 凸出的3D边框 55 static 3D边框格式 56 sunken 凹进的3D边框 57 58 caption 59 此属性为设置HTA窗口是否显示标题栏或标题,默认值为 yes。 60 61 commandLine 62 此属性获取启动HTA的参数。 63 64 contextMenu 65 此属性为设置鼠标右键点击时是否显示上下文菜单。 66 67 icon 68 此属性为设置应用程序的图标。 69 70 innerBorder 71 设置是否显示内部3D边界。 72 73 navigable 74 设置链接文档加载到主HTA窗口或者新的浏览窗口。 75 76 maximizeButton 77 此属性为设置是否在HTA窗口中显示最大化按钮,默认值为 yes。 78 79 minimizeButton 80 此属性为设置是否在HTA窗口中显示最小化按钮,默认值为 yes。 81 82 Scroll 83 此属性为设置是否在右端显示竖向滚动条,默认值为 yes。 84 85 scrollFlat 86 设置滚动条是3D的或者平面的。 87 88 selection 89 设置内容是否可以被鼠标或键盘选中。 90 91 showInTaskBar 92 此属性为设置是否在任务栏中显示此应用程序,默认值为 yes。 93 94 sysMenu 95 此属性为设置是否在HTA窗口中显示系统菜单,默认值为 yes。 96 97 version 98 此属性为设置应用程序的版本,默认值为空。 99 100 windowState 101 此属性为设置HTA窗口的初始大小,默认值为 normal。 102 它可以设为 103 normal 默认大小 104 minimize 最小化 105 maximize 最大化 106 107 hta 全名 : Hierarchical Task Analysis 108 */ 109 110 /** window对象: 111 onbeforeunload//退出事件 112 onbeforeunload = function(){alert(1);} 113 114 onunload //退出事件 115 116 event 117 118 onafterprint//打印后事件 119 onbeforeprint 120 121 onblur = function(){alert(1);}//窗口失去焦点事件 122 123 status 124 clientInformation 125 clipboardData//剪贴数据object 126 onload 127 onhashchange//url改变事件 128 onscroll 129 maxConnectionsPerServer = 32//http连接最大次数 130 location = location = file:///C:/Users/Administrator/Desktop/1.hta 131 onresize 132 133 134 操作本地文件 135 136 //drive: 137 138 var fso, fldr, s = ""; 139 // 创建FileSystemObject对象实例 140 fso = new ActiveXObject("Scripting.FileSystemObject"); 141 // 获取Drive 对象 142 fldr = fso.GetFolder("c:\\"); 143 // 显示父目录名称 144 alert("Parent folder name is: " + fldr + "\n"); 145 // 显示所在drive名称 146 alert("Contained on drive " + fldr.Drive + "\n"); 147 // 判断是否为根目录 148 if (fldr.IsRootFolder) 149 alert("This is the root folder."); 150 else 151 alert("This folder isn't a root folder."); 152 alert("\n\n"); 153 // 创建新文件夹 154 fso.CreateFolder ("C:\\Bogus"); 155 alert("Created folder C:\\Bogus" + "\n"); 156 // 显示文件夹基础名称,不包含路径名 157 alert("Basename = " + fso.GetBaseName("c:\\bogus") + "\n"); 158 // 删除创建的文件夹 159 fso.DeleteFolder ("C:\\Bogus"); 160 alert("Deleted folder C:\\Bogus" + "\n"); 161 162 163 //file: 164 165 (一)创建文件 166 一共有3种方法可用于创建一个空文本文件,这种文件有时候也叫做文本流(text stream)。 167 第一种是使用CreateTextFile方法。代码如下: 168 代码如下: 169 170 var fso, f1; 171 fso = new ActiveXObject("Scripting.FileSystemObject"); 172 f1 = fso.CreateTextFile("c:\\testfile.txt", true); 173 第二种是使用OpenTextFile方法,并添加上ForWriting属性,ForWriting的值为2。代码如下: 174 代码如下: 175 176 var fso, ts; 177 var ForWriting= 2; 178 fso = new ActiveXObject("Scripting.FileSystemObject"); 179 ts = fso.OpenTextFile("c:\\test.txt", ForWriting, true); 180 第三种是使用OpenAsTextStream方法,同样要设置好ForWriting属性。 181 代码如下: 182 183 var fso, f1, ts; 184 var ForWriting = 2; 185 fso = new ActiveXObject("Scripting.FileSystemObject"); 186 fso.CreateTextFile ("c:\\test1.txt"); 187 f1 = fso.GetFile("c:\\test1.txt"); 188 ts = f1.OpenAsTextStream(ForWriting, true); 189 190 (二)添加数据到文件 191 当文件被创建后,一般要按照"打开文件->填写数据->关闭文件"的步骤实现添加数据到文件的目的。 192 打开文件可使用FileSystemObject对象的OpenTextFile方法,或者使用File对象的OpenAsTextStream方法。 193 填写数据要使用到TextStream对象的Write、WriteLine或者WriteBlankLines方法。在同是实现写入数据的功能下,这3者的区别在于:Write方法不在写入数据末尾添加新换行符,WriteLine方法要在最后添加一个新换行符,而WriteBlankLines则增加一个或者多个空行。 194 关闭文件可使用TextStream对象的Close方法 195 196 (三)创建文件及添加数据例程 197 下面的代码将创建文件、添加数据、关闭文件几个步骤结合起来进行应用: 198 代码如下: 199 var fso, tf; 200 fso = new ActiveXObject("Scripting.FileSystemObject"); 201 // 创建新文件 202 tf = fso.CreateTextFile("c:\\testfile.txt", true); 203 // 填写数据,并增加换行符 204 tf.WriteLine("Testing 1, 2, 3.") ; 205 // 增加3个空行 206 tf.WriteBlankLines(3) ; 207 // 填写一行,不带换行符 208 tf.Write ("This is a test."); 209 // 关闭文件 210 tf.Close(); 211 212 (四)读取文件内容 213 从文本文件中读取数据要使用TextStream对象的Read、ReadLine或ReadAll 方法。Read方法用于读取文件中指定数量的字符;ReadLine方法读取一整行,但不包括换行符;ReadAll方法则读取文本文件的整个内容。读取的内容存放于字符串变量中,用于显示、分析。在使用Read或ReadLine方法读取文件内容时,如果要跳过一些部分,就要用到Skip或SkipLine方法。 214 下面的代码演示打开文件、填写数据,然后读取数据: 215 代码如下: 216 var fso, f1, ts, s; 217 var ForReading = 1; 218 fso = new ActiveXObject("Scripting.FileSystemObject"); 219 // 创建文件 220 f1 = fso.CreateTextFile("c:\\testfile.txt", true); 221 // 填写一行数据 222 f1.WriteLine("Hello World"); 223 f1.WriteBlankLines(1); 224 // 关闭文件 225 f1.Close(); 226 // 打开文件 227 ts = fso.OpenTextFile("c:\\testfile.txt", ForReading); 228 // 读取文件一行内容到字符串 229 s = ts.ReadLine(); 230 // 显示字符串信息 231 alert("File contents = ‘" + s + "‘"); 232 // 关闭文件 233 ts.Close(); 234 235 (五)移动、拷贝和删除文件 236 对于以上三种文件操作,javascript各有两种对应的方法:File.Move 或 FileSystemObject.MoveFile用于移动文件;File.Copy 或 FileSystemObject.CopyFile用于拷贝文件;File.Delete 或 FileSystemObject.DeleteFile用于删除文件。 237 下面的代码演示在驱动器C的根目录下创建一个文本文件,填写一些内容,然后将文件移动到\tmp目录下,再在目录\temp下面建立一个文件拷贝,最后删除这两个目录的文件: 238 代码如下: 239 var fso, f1, f2, s; 240 fso = new ActiveXObject("Scripting.FileSystemObject"); 241 f1 = fso.CreateTextFile("c:\\testfile.txt", true); 242 // 写一行 243 f1.Write("This is a test."); 244 // 关闭文件 245 f1.Close(); 246 // 获取C:\根目录下的文件句柄 247 f2 = fso.GetFile("c:\\testfile.txt"); 248 // 移动文件到\tmp目录下 249 f2.Move ("c:\\tmp\\testfile.txt"); 250 // 拷贝文件到\temp目录下 251 f2.Copy ("c:\\temp\\testfile.txt"); 252 // 获取文件句柄 253 f2 = fso.GetFile("c:\\tmp\\testfile.txt"); 254 f3 = fso.GetFile("c:\\temp\\testfile.txt"); 255 // 删除文件 256 f2.Delete(); 257 f3.Delete(); 258 */ 259 260 var commandLine=myApplication.commandLine.split(" ");//接收命令行参数 261 262 var proto = window; 263 264 for(var k in proto){ 265 document.write(typeof(k)+' '+k+' = '+proto[k]+'<br />'); 266 } 267 268 var urler = "H:\\file.hta"; 269 var o = new ActiveXObject("Scripting.FileSystemObject"); 270 var f = o.createtextfile(urler, true);//创建文件 271 var c = o.GetFile(urler).DateLastModified;//获取最后修改日期属性值 272 alert(c); 273 </script>