转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
vb高手搜集-常见问题总结4(终章)         ★★★★

vb高手搜集-常见问题总结4(终章)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:709 更新时间:2009/4/23 15:03:30

 

  一、如何取得文件大小
  VB6 提供了一个新的物件模型,叫做 FSO (File System Object) 物件模型,运用它,我们可以很方便的处理磁盘、资料夹和文件的一些动作。

  FSO 物件模型含有好几个物件,其中有一个 File 物件是用来求得文件的相关资讯,在目前这个主题,我们就可以使用 File 物件!它有一个属性是 Size,对文件来说就是指文件的大小 (单位为位元组)。 (注一)


  虽然使用 File 物件的 Size 属性就可以求得文件的大小,但是它有以下二个缺点:
  1、只能用于 VB6 以后的版本。
  2、它不是 VB6 内定的功能,必须另外引用 Scrrun.dll (Microsoft Scripting Runtime) 才可以!

  以下的二个方法就可以使用在所有的 VB 版本中 (含 VB6),而且是 VB 内定的功能:
  1、FileLen 函数:返回一个 Long,代表一个文件的长度,单位是位元组。
  语法:FileLen(pathname) ' pathname 是全路径之文件名称
  适用:取得一个尚未开启的文件的长度大小 (注二)

  2、LOF 函数:返回一个 Long ,单位为位元组,用来代表由 Open 陈述式所开启的文件之大小。
  语法:LOF(filenumber) ' filenumber 是一个文件代码
  适用:取得一个已开启的文件的长度大小

  注一:File 物件的 Size 属性除了可以求得一个文件的大小,也可以用来取得整个目录的所有文件大小!

  注二:使用 FileLen 函数时,如果所指定的文件正在开启中,则所返回的值是这个文件在开启前的大小。


  二、如何移除或更改桌面背景的底色图案 (Wallpaper)
  SystemParametersInfo 这个 API 可以设定许多 Windows 系统的功能参数,而其中一个参数就是桌面底图!通常一般的使用者会透过控制面板中的【显示器】来设定桌面底图。

  在底下的范例中,我们使用 SPI_SETDESKWALLPAPER 这个参数及图片文件名称来设定新的桌面底图,同时使用 SPIF_SENDWININICHANGE 来通知各个视窗这个改变。

  '在表单的声明区中加入以下声明及常数:
  Private Declare Function SystemParametersInfo Lib user32 Alias SystemParametersInfoA (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As String, ByVal fuWinIni As Long) As Long

  Const SPI_SETDESKWALLPAPER = 20
  Const SPIF_UPDATEINIFILE = &H1
  Const SPIF_SENDWININICHANGE = &H2


  '在表单上加入一个 CommandButton (Command1) 来移除桌面底图,程序码如下:
  Private Sub Command1_Click()
  Dim X As Long
  X = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0&, (None), SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
  MsgBox 桌面底图 (Wallpaper) 已经被移除
  End Sub


  '在表单上加入另一个 CommandButton (Command2) 来更改桌面底图,程序码如下:
  Private Sub Command2_Click()
  Dim FileName As String
  Dim X As Long
  FileName = cwindowstest.bmp
  X = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0&, FileName, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
  MsgBox 桌面底图 (Wallpaper) 已经被更改
  End Sub

  三、一个快速注册 DLL 及 OCX 的方法

  有时候我们在 VB 中要引用某一个 DLL 或 OCX 时,会出现文件未注册的讯息,这时,我们可以使用人工注册的方法,也就是直接在命令列中使用 regsvr32.exe 来做,做法如下:

  文件注册:CWindowsSystemRegsvr32.exe CWindowsSystemTest.ocx
  取消注册:CWindowsSystemRegsvr32.exe u CWindowsSystemTest.ocx

  这些动作我们也可以直接写到程序中,使用 Shell 来执行,但是我现在要说的,都不是上面提到的方法!

  注意看罗!方法如下:
  1、在资源管理器中找到 CWindowsSystemRegsvr32.exe 并【复制】 ( 按鼠标右键选复制 )

  2、将目录移到 CWindowsSendTo 后,执行【贴上快捷方式】 ( 按鼠标右键选贴上快捷方式 )

  3、将快捷方式名称改成【REGISTER】

  4、OK

  现在,如果您想替某一个文件做注册动作,例如:CWindowsSystemTest.ocx,您只要打开资源管理器,找到 CWindowsSystemTest.ocx,按鼠标右键选【传送到】【REGISTER】即可完成注册动作了!

  注:有一个地方要注意的是,Regsvr32.exe 只能注册 32 位的文件!如果要用它来注册 16 位的文件,会有错误讯息产生。


  四、如何用TextBox打开和保存文件

  作为轻量级的控件,TextBox控件使用率很高,但相关的资料极少谈及如何用TextBox控件打开和保存文件,大都采用回避的态度,对VB初学者带来很多不便。笔者近日为友人做一个英文朗读软件,按友人的要求,软件要能象MS的记事本那样能打开和保存文档。其实实现方法并不复杂,现将心得写出来,希望对大家有帮助。如果您有更好的方法,请来信:handanfang@163.net

  '新建标准EXE,加入一个TextBox控件,一个公共对话框,两个菜单。

  '打开
  Private Sub mnuOpen_Click()
  CommonDialog1.Filter = 文档文件(.txt).txt所有文件(.).
  CommonDialog1.ShowOpen
  Open CommonDialog1.FileName For Input As #1
  Text1.Text = StrConv(InputB$(LOF(1), 1), vbUnicode)
  Close #1
  End Sub


  '保存
  Private Sub mnuSave_Click()
  On Error Resume Next
  CommonDialog1.Filter =文档文件(.txt).txt所有文件(.).
  CommonDialog1.ShowSave
  Open CommonDialog1.FileName For Output As #1
  Print #1, Text1.Text
  Close 1
  End Sub


  TextBox只支持打开64K以下的文件,建议最好设置出错处理。
  以上程序在PWin98、VB6.0下调试通过。

  五、如何判断目前文件资源管理器中,文件名称之扩展文件名是显示或隐藏

  由于我在集团性的资讯处工作,所负责的公司系统有的是属于外点,例如润泰建设有个单位是行销业务处,他们的工作是卖公司盖的房子,所以他们的业务人员平常都是待在各工地的接待中心,我替他们开发的销售系统在工地的部份是属于单机作业的,使用 Access 资料库,每一个星期资料回传总公司一次。

  业务人员由于流动性大,不太了解系统,有时候,系统出了问题,业务人员又搞不清楚状况,于是我会要求他们将资料库 sale.mdb 回传公司,结果,常闹笑话,原来他们回传公司的,常常不是 sale.ldb 就是 sale.exe,为什么呢?

  原因很简单,因为他们的文件资源管理器中,设定了将扩展文件名隐藏起来,结果只看到三个不同图示的 sale 文件 (分别是 Sale.mdb、Sale.ldb、Sale.exe),不太会操作的业务人员根本分不清楚那一个图示的 sale 文件才是资料库文件案!

  我们在 VB 的程序中要如何判断,目前文件资源管理器中的设定是否显示扩展文件名呢?
  Private Declare Function GetFileTitle Lib comdlg32.dll Alias GetFileTitleA (ByVal lpszFile As String, ByVal lpszTitle As String, ByVal cbBuf As Integer) As Integer
  Private Function HasExtension(sFileName As String) As Long
  Dim sTemp As String
  Dim lTemp As Long

  sTemp = String(1, 0)
  lTemp = GetFileTitle(sFileName, sTemp, Len(sTemp))
  If lTemp  0 Then HasExtension = -1 Exit Function
  sTemp = String(lTemp, 0)
  Call GetFileTitle(sFileName, sTemp, Len(sTemp))

  If (Left$(Right$(Left$(sTemp, lTemp - 1), 4), 1)) = . Then
  HasExtension = 1
  Else
  HasExtension = 0
  End If
  End Function

  若有显示扩展文件名,返回值是 1,否则返回0。 


[VB.NET程序]用VB制作IE工具条自定义按钮2  [VB.NET程序]用VB制作IE工具条自定义按钮1
[VB.NET程序]用VB创建Windows快捷方式(无需DLL)  [VB.NET程序]用VB编写你自己的MSN即时通讯软件1
[VB.NET程序]VB十七种可用一行代码完成的技巧  [VB.NET程序]vb高手搜集-常见问题总结(3)
[VB.NET程序]vb高手搜集-常见问题总结(2)  [VB.NET程序]VB 中资源文件的多种使用技巧
[VB.NET程序]VB 实用函数集  [VB.NET程序]vb 高手搜集-常见问题总结(1)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台