HTA,XUL技术的鼻祖

近几年来,XUL方兴未艾,以XAML(WPF),XUL等新技术,代表着一种以标记语言和脚本构造桌面应用程序的潮流,但是有一项Microsoft的技术却一直默默无名,这就是HTA技术,甚至有时候,它也背上了“木马”的恶名,但是HTA却是一切XUL技术的鼻祖。

MSHTA技术起源时间不详,我能查找的是的1999年3月发布的ie 5.0就带有mshta.exe运行时,(Win98SE),远远早于XUL和XAML。与这两种XUL技术不同的是,HTA技术并没有产生新的标记,而只是利用现成的HTML标记,这虽然在流媒体、动画技术等等方便表现力较弱,却带来一个很大的好处,即我们利用现成的网页来构造桌面应用程序。

所谓的HTA,即HTML Application的缩写(HTML应用程序),它通过MSHTA运行时,可以直接将HTML保存成HTA的格程序,该程序就是一个独立的应用软件,与VB、C++等程序语言所设计的软件没什么差别。也有人把HTA称为Javascript/vbscript的GUI. 无疑,现成的javascript框架和AJAX手法都能为HTA所用。


最简单的HTA程序,可以不需要任何脚本,而只是一段纯的html,只需要将其后缀名改为.hta,双击即可运行。
[code]
<!—example1.hta-->
<html>
<head>
<title>第一个HTA的例子</title>
<style>
p {font-size:24;cursor:hand}
</style>
</head>
<body>
<center>
<p>HTA</P>
[/code]

运行的效果就和一个普通winform没有区别:


[img]/upload/attachment/117152/af45ef2b-f3fd-3d22-9b20-57f4723e5c73.bmp[/img]


借助脚本语言,HTA可以运行程序、存取文件、调用ActiveX和COM,因此它几乎能完成桌面应用的一切工作,因此利用HTA技术中HTML的强大表现力,HTA可以超炫的界面表现。

如果你想控制HTA程序外观,可以在<HEAD>标签中,添加一行<HTA:Application...>,它提供了边框、标题、最大化按钮、最小化按钮的控制手段。
[code]
<HTA:Application
border=”thick”
caption=”yes”
maximizebutton=”yes”
minimizebutton=”yes”
sysmenu=”yes”
windowstate=”normal”
>
[/code]


HTA技术可以透过WMI和ActiveX实现强大的功能
[code]
<html>
<head>
<title>Spreadsheet Example</title>
</head>

<Script Language="VBScript">

Sub Window_Onload
Spreadsheet1.TitleBar.Caption = "Process Information"
End Sub

Sub GetProcesses
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("Select * From Win32_Process")
i = 1

For Each objProcess in colProcesses
strCell = "A" & i
Spreadsheet1.Range(strCell).Cells(1) = objProcess.Name
strCell = "B" & i
Spreadsheet1.Range(strCell).Cells(1) = objProcess.WorkingSetSize
strCell = "C" & i
Spreadsheet1.Range(strCell).Cells(1) = objProcess.HandleCount
i = i + 1
Next
End Sub

</script>

<body bgcolor="buttonface">
<br>

<object classid="clsid:0002E559-0000-0000-C000-000000000046" id="Spreadsheet1">
<param name="DisplayToolbar" value="0">
<param name="DisplayWorkbookTabs" value="0">
<param name="DisplayTitleBar" value="-1">
</object>

<p><input type="button" value="Get Process Information" οnclick="GetProcesses">

</body>
</html>
[/code]


为插入和配置电子表格控件,我们使用以下几行代码:
[code]
<object classid="clsid:0002E559-0000-0000-C000-000000000046" id="Spreadsheet1">
<param name="DisplayToolbar" value="0">
<param name="DisplayWorkbookTabs" value="0">
<param name="DisplayTitleBar" value="-1">
</object>
[/code]

而WMI提供了当前运行进程的信息,最后运行效果如下


[img]/upload/attachment/117154/d4345877-5870-353f-8dce-8a210f2f2e26.bmp[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值