浅谈提词器软件在NT架构系统下的移植使用

2022-09-11

2009年底我们电视技术中心对网络进行改造, 计划将提词系统整合进中心办公网络, 这样以后出像就无需U盘传递文件, 可以避免病毒交叉感染。我们使用的TC3000提词器是早期WIN98的产品, 当时买的是成套设备, 所以软件是随机安装好的, 安装程序包也找不到了。这次用新闻采编系统淘汰下来的INTEL赛扬的电脑替换原来586架构的电脑, 原来的系统是WIN98系统, 考虑到对网络的支持以及安全性, 再加上由于硬件的制约, 所以决定使用WIN2000系统。

先来简单介绍一下提词器的基本原理, 如图1所示, 它是利用单反玻璃单面透射和单面反射的光学特性, 使播音员可以看到挡在摄像机前面的与其呈45°的单反玻璃上反射的上滚文字, 而摄像机透过单反玻璃拍摄并不会受到另一面反射的文字的影响, 播音提词器通过摄像头或者通过电脑将文字显示在与单反玻璃呈45°夹角的水平放置的显示器上, 由于镜面反射的原因, 要想看到反射的正像, 显示器必须输出镜像。镜像对于CRT显示器来说很简单, 只需交换行扫描输出线即可, 对于液晶显示器来说就不行了, 所有的镜像画面要通过计算机软件来实现。老式的提词器大多采用的是CRT电视机和摄像头, 后来改用液晶显示屏和电脑字幕上滚软件, 现在的提词器大多使用液晶显示屏输出镜像图像, 本台采用了VGA分配器将信号分成两路, 一路供本机操作用, 一路分配到提词显示器, 也有采用显卡双头显示功能实现的, 但是对电脑硬件的要求比较高。

本次需要用到的软件有以下几种。

PEiD V0.93查壳工具, 可以识别EXE文件是用何种程序编写的, 同时也可以显示某个进程所调用的模块, 如动态链接库、控件等。

DLL SHOW V4.7可以详细显示应用程序所调用的DLL (动态链接库) 、控件等。

FontCreator 5.6字体制作、修改软件。

首先在WINME机器上运行PEiD, 选择tcwin.exe文件, 可以看到程序是用VB5.0或者是VB6.0编写的, 如图2所示, 接着点击任务查看器, 进程选择tcwin.exe, 这时可以看到程序调用了20个模块 (包括自身) , 其中有一个叫MSVBVM50.DLL的动态链接库, 是微软Microsoft Visual Basic虚拟机相关文件, 也是VB5的运行库, 可以进一步确定此程序是用VB5编写而成的。早期用VB5编写的未采取加密手段的软件相对来说移植比较简单, 成功的概率也很大。

接下来使用DLL SHOW查看tcwin.ex e详细的模块调用情况。运行DLL SHOW, 进程还是选择tcwin.exe。非常详细的列出了各种模块的版本、日期、所在目录等。按照日期排序, 可以看到日期是Jun 8, 2000的模块都是系统自身所带的动态链接库, tcw in.exe的创建时间为Aug 28, 1999, 那么先把这个时间之前的模块拷贝出来, 这样总共需要拷贝4个文件。ComDlg32.ocx、Com Ctl32.ocx、TC_Windows95.DLL、tcwin.ex e, 其中ComDlg32.ocx是通用对话框控件 (C ommon Dialog) , ComCtl32.ocx是通用控件 (Common Controls) , TC_Windows95.D LL是青岛广播电视科研所自己开发的控件。现在将这四个文件拷贝到装有WIN2000系统的电脑上, 其中ComDlg32.ocx、Com Ctl32.ocx、TC_Windows95.DLL拷贝到C:WINNTsystem32目录下, tcwin.exe暂且拷贝到桌面。一般通过拷贝来使用DLL或者OCX是要注册才能用的, 注册方法是按[开始]>[运行]输入字符串regsvr32WINNTsystem32。

COMDLG32.OCX后按下[确定]。但是V B较早前开发的程序一般不注册控件也能使用, 所以先不注册试一下, 运行桌面上的tcwin.exe, 这时程序可以正常启动, 调入一篇文字, 试用一下所有功能。除了正反字使用出错外, 其它功能都可以正常使用, 出错代码为“380”, 原因一般是设置控件的TXT属性时出错, 结合刚才出错的状态, 因为是在设置正反字的时候才出现的, 可以确定应该是字体方面的问题。返回到WINME系统的字库目录下分析有哪些中文字体, 字体目录下有十几种中文字体。从提词器软件的字体里查看, 把字体大小设为20, 这样预览框会显示更多的字符, 变换不同的中文字体, 很快就找到一个字体名称为MS C ourier的TrueType字体文件, 可以看到中文字符是镜像字体。从字体目录里找到这个字体文件, 文件名为courier.ttf, 点击查看。把这个字体加入到WIN2000的字体里面, 现在再用正反字功能, 出错代码还是出现“380”, 原来提词器软件的字体设置里没有镜像字体的, 现在可以看到多了一个名称为MS Cou的字体, 选择此字体可以看到提示区窗口的文字已经可以变成镜像文字了, 对比WINME系统, 在提词器软件里显示的是MS Courier, 使用很正常, 那么问题就是出在了字体的名称上。而且在WINME系统中, 无论把提词器的字体设置成何种中文字体, 点击正反字以后都是设置成MS Co urier这一种字体, 可以理解为当点击正反字功能时程序设置字体名称为MS Courie r的字体, 但是系统只显示出是MS Cou字体, 找不到字体程序运行就出错了。

接下来就是修改字体名称, 运行FontC reator, 打开Courier.ttf文件, 这时可以看到所有的中文字体都是镜像的。菜单栏Form at→Naming, Platform选择Microsoft PRC, 可以看到三个表示字体名的地方是乱码。

将三个地方全部改成MS Courier, 而且还要在菜单栏tools→options→font→recalc average chac width, 去掉这个√。 (不去掉的话会出现显示大于小一号字体的文本时, 两个字之间会空出一个中文字的位置) , 然后另存为CourierNew.ttf, 将这个文件拷贝到WIN2000字体目录下, 运行提词器软件, 试用所有功能一切正常, 将5个文件拷贝, 重新打包, 制作批命令实现自动安装, tcwin.exe可以放桌面或者其它目录。

移植到XP相对简单, 因为字体文件不用修改, 用原来的MS Courier字体安装到XP系统中就可以了, 有的XP系统已经带有最新的ComDlg32.ocx、ComCtl32.ocx这两个文件, 所以只要将TC_Windows95.DLL复制到系统的system32文件夹下, 也不要注册控件, tcwin.exe也可以放桌面或者其它目录直接运行。

原来使用1.44M软盘的时候, 提词软件打开文件时一定要读取上一次使用的文本文件, 就是需要使用上一次用的软盘, 而下次来出像时又不一定是同一张软盘, 所以很麻烦。后来分析了程序修改的注册表内容, 将相关的注册表内容提取出来, 制作成了单独的REG文件, 内容如下。

“dispfontname”=“黑体”

可以分析看出, 分别是对所显示的字体大小、颜色、字体名称、消隐时间显示、语言、文件路径这些参数的设置。可以通过这个为每个主持人设置不同的参数, 因为每个主持人所看的字体大小要求是不一样的, 有的一行10个, 有的是15个。

实际使用中, 反映字幕提示有停顿, 通过添加32M内存和降低显示分辨率的办法成功解决, 至此已经使用五个多月, 一切正常。

摘要:由于版本原因, 一些老版提词器软件在更新系统后往往无法正常使用, 本文对这一难点进行了阐述, 对相关同行有一定的指导作用。

关键词:TC3000提词器,PEiD V0.93,DLL SHOW V4.7

参考文献

[1] 徐威, 李宏虹.电视演播室中国广播电视出版社[M], 2006, 8.

[2] 陶静, 孙颖.数据结构基础史九林[M].机械工业出版, 2008, 7.

上一篇:煤化工企业危险源辨识与分析探讨下一篇:内部控制审计在固定资产管理中的运用