用WSH创建系统字本样本
Windows脚本语言WSH用起来却是很方便,不过在使用过程中总是感觉功能不是很强大,用起来有很大的限制,有限的对象/属性让你不能为所欲为。
这不,我的一个朋友是做美术设计的,每次为了找到合适的字体的总是试来试去,很有点不厌其烦的味道,我自告奋勇要为他解决这道难题,用VB、VC吧,好像有点大材小用;用WSH吧,却发现还不一定能实现这个功能!后来听一个WSH老手说可以通过访问COM对象来实现,经过一番摸索还终于实现了……
下边就是我的实现方法,之所以将它介绍给你,不仅仅是因为通过它可以完成这一个小小的功能,更重要的是,它提供给我们一种通过COM来调用Windows API的方法。我们知道,COM对象的功能十分强大,它可以完成任何一个C程序员所能够完成的工作,换而言之,WSH也可以有这么强大的功能!
下载VBCCE
要通过COM访问Windows API,我们必须自己生成一些OCX文件(不要害怕,只是几个很简单的步骤,连菜鸟都可以很快掌握的……),所以我们首先需要一些工具:
如果你有Visual Basic,你已经有了我们需要完成本文的所有工具;如果没有Visual Basic,也没有关系,由于我们只是用Visual Basic来包装几个函数,所以不需要Visual Basic这么大的工具,我们只需要一个控件生成器,这就是VBCCE,下载地点为 http://msdn.microsoft.com/vbasic/downloads/CCE,下载下来的是一个名为vb5ccein.exe的可执行文件,大小为7MB,直接执行此可执行文件安装VBCCE。
生成控件
启动VBCCE后,打开一个“New Project(新建项目)”,该项目类型为“Active Control(ActiveX控件)”。
1.引用部件
在窗口左边的“ToolBox(工具箱)”上空白处单击右键,选择“Components(部件)”,在弹出的“Components”窗口中,选中“Microsoft Windows Common Control”,按下“确定”按钮,将“Microsoft Windows Common Control”包含的控件显示在工具箱上以备后用。
2.包装控件
在VBCCE主界面,选择“Project(工程)”/“Add Form(添加窗体)”。
在工具箱上选中“ListView”控件,添加到新建的Form1上。
将Project1命名为MyTool。注意:给工程命名要小心,不能和系统中已经存在的对象重名,本例中命名为MyTool。
将控件命名为ListFonts,现在我们包装的这个控件名就是MyTool.ListFonts,以后就通过这个名字来调用它。
为ListFonts控件添加代码如下:
Public Function EnumFonts() As String
Dim item As Variant
Dim x As Long
Form1.ListView1.ColumnHeaders.Add , , "font"
For x = 0 To Screen.FontCount - 1
Call Form1.ListView1.ListItems.Add(, "key" & x, Screen.Fonts(x))
Next
Form1.ListView1.Sorted = True
Form1.ListView1.SortKey = 0
Form1.ListView1.SortOrder = 0
Form1.ListView1.Refresh
For Each item In Form1.ListView1.ListItems
EnumFonts = EnumFonts & item.Text & vbCr
Next
' delete list
Unload Form1
End Function
3.编译/分发控件
对象的建立工作已经完成,执行“File(文件)”/“Make MyTool.ocx(生成MyTool.ocx控件)”,现在可以调用MyTool.ListFonts控件了。
那么以后我们是不是每一次用MyTool.ListFonts控件都要用VBCCE来编译一遍呢?
不是这样的,你可以用VBCCE附带的“Application Setup Wizard”来将这个OCX控件编译成一个可安装的控件,这样在需要的时候随时可以Setup而不管你是否安装了VBCCE……
创建字体样本页
控件已经生成了,我们现在只用引用控件,列举出系统上已经安装的字体,如果你愿意还可以打印出来……
代码如下:
set tools = CreateObject("MyTool.ListFonts"
set ie = WScript.CreateObject("InternetExplorer.Application", "ie_"
Title = "字体显示页面"
ShowWords = "欢迎订阅PCDigest"
StandardFormat = "<font style=""{12pt " & "Arial}"">;"
FontListEmu = Split(tools.EnumFonts, vbCr)
OpenIE 500,400,Title
for each Font in FontListEmu
AddToIE Font
next
sub AddToIE(FontName)
size= 15
Format = "<font style=""{font: " & size & "pt " & fontname & "}"">;"
html = ""
html = html + StandardFormat + "字体名称: " + FontName + "</font>;
;"
html = html + Format + ShowWords + "</FONT>;<HR>;"
ie.document.body.insertAdjacentHTML "beforeEnd", html
end sub
sub OpenIE(width, height, title)
ie.height =height
ie.width =width
ie.toolbar = 0
ie.statusbar = 0
page = "JavaScript:'<TITLE>;" + title + "</TITLE>;'"
ie.navigate(page)
do while (ie.ReadyState<>;4)
loop
ie.visible = true
end sub上边这段代码,将“欢迎订阅PCDigest”以系统中的所有字体显示在一个大小为500×400的IE窗口中,字体大小设置为15。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论