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