请教求全路径的api函数的使用!
请问Public Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long如何使用?其后括号中的各项参数是什么意思?求得的全路径那里返回?谢谢!
以下内容摘自《Windows API帮助》
VB声明 :Declare Function GetFullPathName& Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, lpFilePart As Long)
说明 :获取指定文件的完整路径名
返回值 :
Long,装载到lpBuffer中的字符数量(排除空中止字符)。如缓冲区的长度不足以容下完整的路径,则返回值就是要求的缓冲区大小。零表示失败。会设置GetLastError
参数表 :
参数 类型及说明
lpFileName String, 指定文件名(长文件名或8.3格式的DOS文件名)
nBufferLength Long, lpBuffer字串的长度
lpBuffer String, 指定一个预先定义好的字串,用于装载目标文件的驱动器及路径名称。如存在长文件名,那么这个参数保存的就肯定是长文件名
lpFilePart Long, 指定一个长整数变量,用于装载文件名起始的地方。参考注解
注解:
lpFilePart参数在vb里很难使用。它的问题在于:尽管windows在这个Long值中装载lpBuffer字串中的地址,用它表示路径信息文件名部分的起始处。但非常不幸,由vb创建的、传递给api的ANSI字串缓冲区也会使用这个地址。等这个函数返回的时候,vb已将返回的(lpBuffer)字串复制回它的内部Unicode字串缓冲区,所以lpFilePart地址已没有任何意义。因此,我们面临两种选择。首先,可以简单的不使用lpFilePart信息(忽略windows装载在参数中的值)。其次,可以将lpBuffer参数变成一个字节数组(lpFilePart As Byte——将数组的第一个元素作为参数传递)
其他 :
在vb的api文本查看器中复制的声明为:Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long
thank you leeyeafu!请问我那里能找到《windows api帮助》这本书?
ask again!
the code is following:option explicit
Private Declare Function GetFullPathName& Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, lpFilePart As Long)
Private Sub Command3_Click()
Dim filename As String
Dim filelength As Long
Dim fullname As String
Dim addres As Long
filename = "jxj1.txt"
filelength = 50
GetFullPathName filename, filelength, fullname, addres
Debug.Print fullname
End Sub
why it was wrong?
下载中心有相应的电子版本下载
http://www.mjtd.com/mcdown/list.asp?id=163
页:
[1]