学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> VB >> VB中操作目录的Winodws API小结


VB中操作目录的Winodws API小结


  下面是windows中提供的对于目录进行操作的API函数及其功能:

CreateDirectory,
CreateDirectoryEx
创建一个新目录
GetCurrentDirectory在一个缓冲区中装载当前目录
GetDiskFreeSpace,GetDiskFreeSpaceEx获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量
GetDriveType 判断一个磁盘驱动器的类型
GetFullPathName获取指定文件的完整路径名
GetLogicalDrives判断系统中存在哪些逻辑驱动器字母
GetLogicalDriveStrings获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径
GetSystemDirectory这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作
GetTempPath 获取为临时文件指定的路径
GetVolumeInformation获取与一个磁盘卷有关的信息
GetWindowsDirectory这个函数能获取Windows目录的完整路径名。在这个目录里,保存了大多数windows应用程序文件及初始化文件
RemoveDirectory删除指定目录
SetCurrentDirectory设置当前目录
SetVolumeLabel 设置一个磁盘的卷标(Label)

  让我们通过几个例子来详细的了解一下其中主要的几个函数及其用法:

  1、GetLogicalDrives

  作用:判断系统中存在哪些逻辑驱动器字母

  声明形式:Declare Function GetLogicalDrives Lib "kernel32" Alias "GetLogicalDrives" () As Long

  说明:此函数的返回值类型为Long,这个结构中的二进制位标志着存在哪些驱动器。其中,位0设为1表示驱动器A:存在于系统中;位1设为1表示存在B:驱动器;以次类推

  2、GetDriveType

  作用:判断一个磁盘驱动器的类型

  声明形式:Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

  说明:此函数的返回值类型为Long,如驱动器不能识别,则返回零。如指定的目录不存在,则返回1。如执行成功,则用下述任何一个常数指定驱动器类型:DRIVE_REMOVABLE(表示磁盘可以从驱动器上移走,通常是软驱), DRIVE_FIXED(磁盘不能从驱动器上移走,通常为本地硬盘), DRIVE_REMOTE(驱动器是远程网络驱动器), DRIVE_CDROM(驱动器是CD-ROM驱动器) 或 DRIVE_RAMDISK(驱动器是RAM驱动器)

  参数为String类型,包含了驱动器根目录路径的一个字串

  下面是示例代码:

‘定义常数变量

Private Const DRIVE_CDROM = 5 ‘表示光盘驱动器
Private Const DRIVE_FIXED = 3 ‘表示硬盘驱动器
Private Const DRIVE_RAMDISK = 6 ‘表示RAM驱动器
Private Const DRIVE_REMOTE = 4 ‘表示网络驱动器
Private Const DRIVE_REMOVABLE = 2 ‘表示软盘驱动器

‘函数声明

Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Sub Form_Load()
 Dim temp As Long
 temp = GetDriveType("e:\") ‘取的e:盘驱动器类型
 Select Case temp ‘比较
  Case DRIVE_CDROM
   MsgBox "DRIVE_CDROM: 光盘驱动器"
  Case DRIVE_FIXED
   MsgBox "DRIVE_FIXED: 硬盘驱动器"
  Case DRIVE_RAMDISK
   MsgBox "DRIVE_RAMDISK: RAM驱动器"
  Case DRIVE_REMOTE
   MsgBox "DRIVE_REMOTE: 网络驱动器"
  Case DRIVE_REMOVABLE
   MsgBox "DRIVE_REMOVABLE: 软盘驱动器"
 End Select
End Sub

  以上代码可以判断e:的类型。

  3、GetDiskFreeSpaceEx

  作用:获取与一个磁盘的组织以及剩余空间容量有关的信息

  声明形式:

Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As LARGE_INTEGER, lpTotalNumberOfBytes As LARGE_INTEGER, lpTotalNumberOfFreeBytes As LARGE_INTEGER) As Long

  说明:此函数的返回值类型为Long,非零表示成功,零表示失败。会设置GetLastError.

  在采用FAT16格式的windows95系统中,如一个驱动器(分区)的容量超过了2GB,则不应使用这个函数。此时,这个函数能识别的最大分区容量只有2GB

  参数说明:

参数类型及说明
lpRootPathNameString,不包括卷名的磁盘根路径名
lpFreeBytesAvailableToCallerLARGE_INTEGER,指定一个变量,用于容纳调用者可用的字节数量
lpTotalNumberOfBytesLARGE_INTEGER,指定一个变量,用于容纳磁盘上的总字节数
lpTotalNumberOfFreeBytesLARGE_INTEGER,指定一个变量,用于容纳磁盘上可用的字节数

  LARGE_INTEGER结构用来代表一个64位带符号的整数值,它的定义如下:

Type LARGE_INTEGER ' 8 Bytes
 lowpart As Long
 highpart As Long
End Type

  其中lowpart为 Long,指定低32位

  highpart 为 Long,指定高32位

  LARGE_INTEGER结构与FILETIME结构内部完全一致。

  请看下面示例:

Private Type LARGE_INTEGER ' 8 Bytes,定义一个LARGE_INTEGER结构
 lowpart As Long
 highpart As Long
End Type

‘函数声明

Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As LARGE_INTEGER, lpTotalNumberOfBytes As LARGE_INTEGER, lpTotalNumberOfFreeBytes As LARGE_INTEGER) As Long

‘定义变量

Dim RootPathName As String
Dim FreeBytesAvailabletoCaller As LARGE_INTEGER
Dim TotalNumberOfBytes As LARGE_INTEGER
Dim TotalNumberOfFreeBytes As LARGE_INTEGER

Private Sub Form_Load()
 Dim temp As Long
 Dim tempa, tempb, tempc
 RootPathName = "c:"
‘取得磁盘空间
 temp = GetDiskFreeSpaceEx(RootPathName, FreeBytesAvailabletoCaller, TotalNumberOfBytes, TotalNumberOfFreeBytes)

‘格式化文本,并显示在text控件

 Text1.Text = Text1.Text + "磁盘容量:" + Chr(13) + Chr(10)
 tempa = TotalNumberOfBytes.highpart * 65635 + TotalNumberOfBytes.lowpart ‘计算容量
 tempa = 0 – tempa ‘我的驱动器大于2G,要得到正确的值,进行了调整
 Text1.Text = Text1.Text + CStr(tempa) + "字节" + Chr(13) + Chr(10)
 tempa = Format(tempa / 1024 / 1024 / 1024, "0.00")
 Text1.Text = Text1.Text + tempa + "G" + Chr(13) + Chr(10)

‘取得磁盘可用空间

 Text1.Text = Text1.Text + "磁盘可用空间:" + Chr(13) + Chr(10)
 tempb = TotalNumberOfFreeBytes.highpart * 1000 + TotalNumberOfFreeBytes.lowpart ‘计算
 Text1.Text = Text1.Text + CStr(tempb) + "字节" + Chr(13) + Chr(10) ’格式化文本并显示
 tempb = Format(tempb / 1024 / 1024 / 1024, "0.00")
 Text1.Text = Text1.Text + tempb + "G" + Chr(13) + Chr(10)

‘取得磁盘已用空间

 Text1.Text = Text1.Text + "磁盘已用空间:" + Chr(13) + Chr(10)
 tempa = 0 – tempa ‘调整
 tempc = tempa – tempb ‘计算
 tempc = 0 - tempc

 Text1.Text = Text1.Text + CStr(tempc) + "G" + Chr(13) + Chr(10)’格式化文本,并显示

End Sub

  以上代码显示了c:上的容量,可用空间和已用空间。

  4、CreateDirectory, CreateDirectoryEx

  作用:创建一个新目录

  声明形式:

Declare Function CreateDirectory& Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES)

Declare Function CreateDirectoryEx& Lib "kernel32" Alias "CreateDirectoryExA" (ByVal lpTemplateDirectory As String, ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES)

  说明:此函数的返回值类型为Long,非零表示成功,零表示失败。会设置GetLastError

  参数说明:

参数类型及说明
lpTemplateDirectoryString,指定一个模板目录的名字,从中复制默认属性(比如目录中文件的默认压缩方式)。如设为vbNullString,则表示不使用模板
lpNewDirectoryString,新目录的名字
lpSecurityAttributes SECURITY_ATTRIBUTES,这个结构定义了目录的安全特性——如果操作系统支持的话

  示例程序代码如下:

‘定义结构

Private Type SECURITY_ATTRIBUTES
 nLength As Long
 lpSecurityDescriptor As Long
 bInheritHandle As Long
End Type

‘函数声明

Private Declare Function CreateDirectory& Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES)

Private Declare Function CreateDirectoryEx& Lib "kernel32" Alias "CreateDirectoryExA" (ByVal lpTemplateDirectory As String, ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES)

Private Sub form_load()
 Dim temp As SECURITY_ATTRIBUTES
 CreateDirectory "c:\test", temp ‘创建文件夹
End Sub

  以上代码在c:下创建一个名为test的文件夹

  5、RemoveDirectory

  作用:移除一个目录

  声明形式:

Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long

  说明:此函数的返回值类型为Long,非零表示成功,零表示失败。会设置GetLastError.

  在调用这个函数前,目录必须为空

  参数说明:

参数类型及说明
lpPathName为String类型,要删除的那个目录的名字

  示例代码如下:

‘函数声明

Private Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long

Private Sub form_load()
 Dim temp As String
 temp= “c:\test”
 RemoveDirectory temp ‘移除文件夹
End Sub

  以上代码删除c:下一个名为test的文件夹。

  6、SetCurrentDirectory

  作用:设置当前目录

  声明形式:

Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long

  说明:此函数的返回值类型为Long,非零表示成功,零表示失败。会设置GetLastError

  参数说明:

参数类型及说明
LpPathNameString,新当前目录的路径

  示例代码如下:

‘函数声明

Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long

Private Sub form_load()
 SetCurrentDirectory "c:\" ‘设置当前目录
End Sub

  以上代码将c:设置为当前目录

  7、GetSystemDirectory

  作用:这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作

  声明形式:

Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

  说明:此函数的返回值类型为Long,装载到lpBuffer缓冲区的字符数量。如lpBuffer不够大,不能容下文件名,则返回要求的缓冲区长度

  参数说明:

参数类型及说明
lpBufferString,用于装载系统目录路径名的一个字串缓冲区。它应事先初始化成nSize+1个字符的长度。通常至少要为这个缓冲区分配MAX_PATH个字符的长度
nSizeLong,lpBuffer字串的最大长度

  示例代码如下:

‘函数声明

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Private Sub form_load()
 Dim buffer As String
 Dim size As Long
 size = 255
 buffer = size + 1
 GetSystemDirectory buffer, size ‘将系统路径存放在buffer中
 MsgBox buffer ‘显示路径

End Sub

  以上代码获取了windows系统目录的完


技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"VB中操作目录的Winodws API小结"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 VB中操作目录的Winodws API小结 相关内容
Google搜索中 VB中操作目录的Winodws API小结 相关内容
雅虎中 VB中操作目录的Winodws API小结 相关内容
Sogou搜索中 VB中操作目录的Winodws API小结 相关内容

相关软件 最新回复帖子:

·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效
·用Photoshop通道将模糊肖像照片清晰化
·照片处理:Photoshop修复残破照片
·PS CS2新增形状模糊滤镜绘制花布图案


  相关软件 VB中操作目录的Winodws API小结相关文章
用Viusal Basic命令操作目录解析 利用VB控件操作目录和文件夹
Visual Basic两行代码写播放器 VB中创建可以输出函数的DLL
在VB的ListView控件中动态加载记录 用VB远程控制可编程控制器
基于VB编程的链式存储技术浅析 VB开发客户服务器软件的设计与实现
在Visual Basic编程中运用数据结构 用VB判断网页文件是否在IE缓存中
向Visual Basic程序员介绍泛型 VB程序错误处理方法小结
VB中SQL合计函数的使用 用VB6实现程序多语言界面
Visual Basic自适应窗体设计经验 VB中数据集合对象的应用
VB编程中钩子的实现及应用 制作VB安装盘的注意事项和测试
用VB6.0的ActiveX控件实现异步下载 Visual Basic模块和过程设计