精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VFP>>〖外部引用〗>>Re:关于修改注册表中GetVolumeInformation 的使用方法

主题:Re:关于修改注册表中GetVolumeInformation 的使用方法
发信人: foxzz()
整理人: hunter__fox(2002-03-16 21:48:54), 站内信件
*!*********************************************
function getvolu 
para p_lpRootPathName
&& 得到盘区信息
&& p_lpRootPathName:驱动器名
&& 示例:do getvolu with "c:\"

#Define FILE_CASE_SENSITIVE_SEARCH     1
#Define FILE_CASE_PRESERVED_NAMES      2
#Define FILE_UNICODE_ON_DISK           4
#Define FILE_PERSISTENT_ACLS           8
#Define FILE_FILE_COMPRESSION         16
#Define FILE_VOLUME_IS_COMPRESSED  32768  
&& &H8000

Declare INTEGER GetLastError IN kernel32
Declare SHORT GetVolumeInformation IN kernel32;
STRING    lpRootPathName,;
STRING  @ lpVolumeNameBuffer,;
INTEGER   nVolumeNameSize,;
INTEGER @ lpVolumeSerialNumber,;
INTEGER @ lpMaximumComponentLength,;
INTEGER @ lpFlags,;
STRING  @ lpFileSystemNameBuffer,;
INTEGER   nFileSystemNameSize
if empty(p_lpRootPathName)
   p_lpRootPathName           = "C:\"      && 驱动器和目录名
endif
if right(p_lpRootPathName,2)<>":\"
   p_lpRootPathName = left(p_lpRootPathName,1)+":\"
endif   

lpRootPathName=p_lpRootPathName   
lpVolumeNameBuffer       = SPACE(256) && lpVolumeName 返回缓存
nVolumeNameSize          = 256        && lpVolumeNameBuffer 的大小
lpVolumeSerialNumber     = 0          && lpVolumeSerialNumber 缓存
lpMaximumComponentLength = 256
lpFileSystemFlags        = 0
lpFileSystemNameBuffer   = SPACE(256)
nFileSystemNameSize      = 256

lnResult = GetVolumeInformation(@lpRootPathName, @lpVolumeNameBuffer, ;
nVolumeNameSize, @lpVolumeSerialNumber, ;
@lpMaximumComponentLength, @lpFileSystemFlags, ;
@lpFileSystemNameBuffer, nFileSystemNameSize)

local m_message
m_message=""
If lnResult = 1
m_message=m_message+"驱动器和目录名:" + ALLTRIM(lpRootPathName) +chr(13)+chr(10)
m_message=m_message+"卷名: " + LEFT(ALLTRIM(lpVolumeNameBuffer),LEN(ALLTRIM(lpVolumeNameBuffer))-1)+chr(13)+chr(10)
m_message=m_message+"卷名最大字符数: " + ALLTRIM(STR(nVolumeNameSize))+chr(13)+chr(10)
m_message=m_message+"卷序列号: " + ALLTRIM(STR(lpVolumeSerialNumber))+chr(13)+chr(10)
m_message=m_message+"文件/目录名的最大字符数 :" + ALLTRIM(STR(lpMaximumComponentLength))+chr(13)+chr(10)
m_message=m_message+"文件系统标记: " + ALLTRIM(STR(lpFileSystemFlags))+chr(13)+chr(10)
m_message=m_message+"文件系统类型: " + LEFT(ALLTRIM(lpFileSystemNameBuffer), LEN(ALLTRIM(lpFileSystemNameBuffer))-1)+chr(13)+chr(10)
m_message=m_message+"文件系统名大小: " + ALLTRIM(STR(nFileSystemNameSize))+chr(13)+chr(10)
Else
m_message=m_message+"运行错误号: "+ GetLastError()
Endif
=messagebox(m_message,0+64+0,"盘区信息")
Clea dlls
Return m_message



----
天行健,君子以自强不息
 

[关闭][返回]