---- 实践中常常期望有一个小软件,它可以自动追踪记录当前应用软件进行工作的时间和内容,例如:使用Word进行文件编辑排版的时间和文件名称,使用AutoCAD软件进行制图的时间和图挡名称,玩某个游戏软件的时间和游戏软件的名称等等。本文讨论如何利用
vb6.0编程实现这样的软件;本文的
程序可同时追踪记录使用Word,Excel或AutoCAD14打开文件(包括打开网上邻居中的文件)进行工作的开始时间、结束时间(以秒为单位)和使用的文件名(包括完整路径)。
---- 下面给出从建立该软件的工程项目到最后生成可执行文件的全过程,这个程序的关键是下面的Timer事件(以1000毫秒为周期),它利用了微软的ActiveDocument技术(Active 文挡),使用函数GetObject来获取当前应用软件对象,用函数DateDiff计算时间差,利用微软的“Microsoft Windows Commn Control 5.0”中的控件“ListView”来实现数据显示界面;
程序在Win98/NT下可以自动追踪记录使用Word97,Excel97和AutoCAD14的使用情况,具体叙述如下。
---- (一)建立工程(项目)vb_time.vbp:
---- 在C盘建目录:VB_TIME,今后我们将这个软件的文件都放到这个目录里。运行VB6.0,选“文件 | 新建工程”的“标准EXE”,出现窗体后可先将这个工程存盘:选菜单的“文件 | 工程另存为”,先取名“vb_time”存窗体(扩展名:frm),再取名“vb_time”存工程(扩展名:vbp)。
---- (二)增加控件ListView与Timer:
---- 在菜单中选:“工程 | 部件”,出现“部件”对话框后选:Microsoft Comman Control 5.0,这时在控件栏里可以看见一些新增加的控件,其中我们需要将其中的“ListView”控件放入到窗体中;放入该控件后,用鼠标右击窗体中“ListView1”,选“属性”,出现“属性页”对话框,在“通用”部分改变“查看”为3,“外观”为1;在“列首”部分插入4列,分别为:文件,时间,开始时间,结束时间. 将Timer控件放入窗体,并设置其Interval属性为1000(= 1秒)。
---- (三)增加代码:
---- (1)通用.声明
Option Explicit
Public applicationName As Object
''运行的应用软件对象名
Public prevFile As String
''当前应用软件打开的文件名
Dim itmX As ListItem
''ListView中的列数组
Dim startDate As Date ''开始时间
Dim endDate As Date ''结束时间
Public newSession As Boolean
(2)FORM的Load过程:
Private Sub Form_Load()
newSession = True
End Sub
(3)Timer1.Timer过程:
Private Sub Timer1_Timer()
Dim str As String
Dim doc As Object
On Error Resume Next
Set applicationName = GetObject(,
"Excel.Application") ''取得当前运行的Excel对象
Set doc = applicationName.ActiveWorkBook
''当前Excel打开的工作簿文件
Set applicationName = GetObject(,
"Word.Application") ''取得当前运行的Word对象
Set doc = applicationName.ActiveDocument
''当前Word的applicationName打开的文件
Set applicationName = GetObject(,
"AutoCAD.Application") ''取得当前运行的AutoCAD对象
Set doc = applicationName.ActiveDocument
''当前AutoCAD打开的图挡文件