栏目导航
[VB程序设计] | 基础教程 | 编程技巧 | 控件集锦 | 编程实例 | 优化技术
当前位置: 主页->程序设计->VB->基础教程->在VB中取得Windows的当前目录

在VB中取得Windows的当前目录

夜鹰电脑教学网 编辑:陈萍 加入日期:2006-10-05 18:11:04 点击数:

[大字体 中字体 小字体]    


  很多情况下我们需要在程序中确定当前Windows的目录,VB中自身并没有这样的函数,但我们可以借助Windows API来达到目的,这个关键的函数就是:Kernel32中的GetWindowsDirectory。
  首先要在新建的程序中加入一个Module,在该Module中作如下声明:

Declare Function GetWindowsDirectory Lib “kernel32” Alias “GetWindowsDirectoryA” (ByVal lpBuffer As String, ByVal nSize As Long) As Long
  
   这里的几个参数说明一下:lpBuffer是一个字符串,用以返回Windows的目录值(实际上是一个指针),这个目录值不带反斜杠的,比如C:\Windows,但有一种情况例外:当Windows安装在根目录下时返回反斜杠,比如C:\;第二个参数是前一个字串的长度,你得告诉系统为返回值预留的字串的最大长度(其实这个参数实在有些鸡肋的感觉);函数的返回值,在成功的情况下是目录字符串的长度,在不成功时返回NULL值,还有一种情况,就是返回值超出预留的串长度,那么该函数就返回实际值应有的长度。

  函数说明完毕,可以看到,为了防止出错情况,函数引入了nSize参数,但只要使用下述经典的取目录代码,可保证程序平稳运行。

Public Function MyGetWinDirectory() As String
   Dim sBuffer As String
   Dim lSize As Long
   sBuffer = String(255, 0)
   lSize = GetWindowsDirectory (sBuffer, Len(sBuffer))
   sBuffer = Left(sBuffer, lSize)
   sBuffer = sBuffer + “\”
   MyGetWinDirectory = sBuffer
End Function
  
   这里程序首先为字符预留了255Bytes,应该是足够了,不会有人用这么长的Windows目录名的,更重要的是超出255的长文件名Windows是不支持的;然后调用GetWindowsDirectory函数,通过返回值lSize截取缓冲区中有用的部分重新定义sBuffer;最后再加上反斜杠,形成完整的路径名。

  现在你可以试一下你的新函数:在窗体Form1中加入一个文本框Text1,然后再加入一个命令键Command1,在Command1_Click()事件中加入以下代码:

 Private Sub Command1_Click()
   Text1 = MyGetWinDirectory
   MsgBox Text1
  End Sub
 
   最后运行程序,占击一下Command1,看一下实际的运行效果。

以上程序在中文Windows98,VB6中通过。


 

作者:佚名 来源:网上转帖  

   
 

上篇:解析VB的事件驱动编程   下篇:Visual Basic 2005中的My功能


[夜鹰论坛] [我要留言] [关闭窗口] [ ][TOP]

■相关教程
没有相关教程
此文章最新评论(不超过十条)
■评论此文章 ( 有问题请去夜鹰论坛发帖 )
共有评论: 查看全部评论 姓名:
【 声明 】 您所发表的言论将被众多网友阅读,因此,您所发表的言论应不违反中国法律,不违背一般的道德原则,否则,您必须对您的不当言论引发的一切不良后果负责;此外,我们的管理员有权删除您发表的不当言论,谢谢合作!