灵活运用VB的App对象

在Visual Basic 的编程实践中,App 是非常重要的全局对象。合理使用该对象开发程序可以大大节约开发时间,并且能实现用其他方法很难达到的目标。下面便是作者在用Visual Basic 开发应用程序时得到的一些技巧和体会。

工具/原料

  • Visual Basic 6.0

步骤/方法

  1. 避免重复运行同一个程序实例
    App 对象的PrevInstance 
    属性返回一个逻辑值,该值指示是否已经有前一个应用程序实例在运行。有时我们开发的程序每次只想运行一个实例,当用户重复运行该程序时,能提醒用户该程序
    已经运行,并自动退出。要实现上述功能,只需在应用程序中添加一个模块,在该模块中加入启动过程Sub Main,将如下代码加到Sub Main 
    中即可。
    If App.PrevInstance Then
    Msg = " 系统正在运行,请在下面任务栏寻找系统的最小化图标。"
    Style = vbOKOnly + vbExclamation + vbDefaultButton2
    Title = "警告!"
    Response = MsgBox(Msg, Style, Title)
    Exit Sub '结束本次运行
    End If
  2. 在系统任务列表中隐藏应用程序
    App 对象的T a s k V i s i b l e 属性返回或设置一个值(boolean 
    布尔表达式的值),用来确定应用程序是否出现在系统任务列表中。缺省值为True,表示应用程序出现在任务列表窗口中;若设置为False,则应用程序不
    出现在任务列表窗口中。利用该属性可以使应用程序的标题不出现在Alt+Ctrl+Del 弹出的任务列表窗口中,从而避免应用程序被用户强行终止。
    注意:应用程序启动并显示其界面后,TaskVisible 
    属性就会被自动设置为默认值True。另外,可以通过设置Title属性来改变应用程序在任务列表窗口显示的名称,否则将显示工程名。举个例子:在
    FORM上建立一个CommandButton控件Command1,加入如下代码:
    Private Sub Form_Load()
    App.Title = "这是一个演示如何隐藏应用程序的示例"
    End Sub
    Private Sub Command1_Click()
    If App.TaskVisible Then
    App.TaskVisible = False
    Else
    App.TaskVisible = True
    End If
    End Sub
    运行该程序,并用Alt+Ctrl+Del 弹出任务列表窗口观察,然后不断点击Command1,看有何变化。
  3. 实现与具体路径无关的应用程序
    开发程序时往往希望程序无论COPY 到哪个目录下都能正常运行,也就是程序与具体的应用程序所在的路径无关。你可以这样做:在应用程序中添加一个模块,在该模块中加入启动过程Sub Main,将如下代码加到模块中。
    Public mypass As String '声明为全局变量
    Sub Main()
    mypath = App.Path
    .. '其余程序部分
    ..
    End Sub
    在程序中凡是涉及到路径的地方,用mypath 代替绝对路径。例如:假设需要通过Data 控件Data1 
    来操作应用程序目录下的localdatabase 子目录下的user.mdb,user.mdb 包含有test 
    表。将如下代码加入该控件所在的FORM的LOAD事件中,就可实现对user.mdb 的操作与绝对路径无关。
    Data1.DatabaseName = mypath + "\localdatabase\user.mdb"
    Data1.RecordSource = "select * from test"
    Data1.Refresh
  4. 应用程序的版本管理
    与应用程序版本有关的属性有:Revision 属性、Major属性、Minor 属性。Revision 
    属性返回工程的修订版本号,该属性在运行时是只读的;Major 属性返回工程的主版本号,该属性在运行时是只读的;Minor 
    属性返回工程的小版本号,该属性在运行时是只读的。要设置工程的有关版本,可以在设计时用位于“工程属性”对话框中的“生成”选项卡上相对应的框设置这些
    属性。
    “修订版本号”反应的是对工程的修改信息,如果将“工程属性”对话框中的“生成”选项设置为“自动加”,则每当工程编译一次(编译为.EXE 
    文件),Revision 属性的值自动累加1。而Major 属性、Minor 
    属性才是我们通常提到的应用软件的版本。例如要设置软件的版本号为3.4,只需在工程设计时,将Major 属性设置为3,Minor 
    属性设置为4。软件运行时如果要显示版本号,可参考如下语句:MsgBox "系统版本为:"+Str(App.Major) + "." + 
    Trim(Str(App.Minor))运行该语句,将弹出一消息对话框显示“系统版本为:3.4”。
  5. 应用程序的日志操作
    App对象支持应用程序日志的操作,与此相关的有LogMode 属性、Logpath属性、LogEvent方法和StartLogging方法。下面说说这些属性和方法的功能及日志操作的步骤。
    1.首先用StartLogging方法对某个操作的日志目标及日志模式进行设置。
    语法格式:App.StartLogging logTarget, logModelogTarget 
    是一个字符串,用于指定一个用于记录日志的文件名。logMode 
    是一个整数值,它决定如何记入日志,一般将其置为vbLogAuto。另外,LogPath 属性、LogMode 
    属性在设计阶段不可用,且在运行阶段为只读,因此不能直接对这两个属性进行赋值,只能通过StartLogging 方法改变。
    2 . 用L o g E v e n t 方法把某个事件记入日志。在WindowsNT 平台上,该方法会把内容写到NT 的Event 
    日志中。在Windows9X平台上,该方法会把内容写到LogPath属性指定的文件中。按照缺省规定,如果不指定文件,事件将被写入
    vbevents.log 文件中。
    语法格式:App.LogEvent logBuffer, eventType
    其中:logBuffer 是要写入到日志中的信息;eventType是可选的,它指定了事件的类型。下面是eventType 的设置值:
    常量名常数值描述
    VbLogEventTypeError 1 错误
    VbLogEventTypeWarning 2 警告
    VbLogEventTypeInformation 4 信息
    3 . 程序运行过程中如果需要了解日志文件路径及文件名、日志写入模式,你可以读取LogMode 属性和LogPath属性的值。下面是一个简单的程序示例:
    App.StartLogging App.Path + "\mylog.log", vbLogAuto
    App.LogEvent "一切正常", VbLogEventTypeInformation
    MsgBox App.LogPath
    MsgBox App.LogMode
    需要注意的是,对日志操作的方法和属性只有在程序被编译为EXE 文件后才能发挥作用,在Visual Basic 调试环境下无效。

猜你喜欢

转载自blog.csdn.net/F2004/article/details/17277269
今日推荐