Windows各种路径的获得
在WINDOWS 下编程经常需要在程序中获得各种路径,比如当前的工作路径,系统的路径,等各种路径。 在WINDOWS 的API 中提供了齐全的API 函数供我们调用。 ---- 先来看一下这几个API 函数的说明: ---- (1). DWORD GetCurrentDirectory( DWORD nBufferLength, //接收目录的字符串的长度LPTSTR lpBuffer //接收目录的字符串的地址);
---- 通过调用这个函数将获得当前的目录,如果调用失败此函数将返回零。 调用这个函数时应将nBufferLength 参数设足够大,接收目录的字符串当然也要有这么长。 详细用法请看例子。 另外用SetCurrentDirectory()函数可以设置当前目录。 ---- (2). UINT GetSystemDirectory( LPTSTR lpBuffer, //接收目录的字符串的地址UINT uSize // 接收目录的字符串的长度);
---- 通过调用这个函数可获得系统的目录,如果调用失败此函数将返回零。 ---- 3. UINT GetWindowsDirectory( LPTSTR lpBuffer, //接收目录的字符串的地址UINT uSize // 接收目录的字符串的长度);
---- 通过调用这个函数可获得WINDOWS 目录,如果调用失败将返回零。 关于这个函数和第二个函数的区别,通过下面的例子你一定会非常清楚。 ---- 下面用VB 来实现。 首先当然要先把API 的声明加到代码中, 开始一个新项目,在窗体(Form1)上放上三个按钮(Command1,Command2,Command3)。 这个例子的功能是单击按钮用MSGBOX 显示得到的路径。 ---- 笔者发现不能简单地复制VB5 的API 文本查看器中关于上面几个API 的声明,要做一定的修改,要在每个函数名后加一个"A",所有代码如下。 Private Declare Function GetCurrentDirectoryA
Lib "kernel32" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function GetWindowsDirectoryA
Lib "kernel32" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function GetSystemDirectoryA Lib "kernel32" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Sub Command1_Click()
Dim Path As String * 255
GetCurrentDirectoryA(Len(Path), Path) '获取当前路径MsgBox (Path)
End Sub
Private Sub Command2_Click()
Dim Path As String * 255
GetWindowsDirectoryA(Path, Len(Path)) '获取WINDOWS路径MsgBox (Path)
End Sub
Private Sub Command3_Click()
Dim Path As String * 255
GetSystemDirectoryA(Path, Len(Path)) '获取SYSTEM路径MsgBox (Path)
End Sub
调试不来