如何得到大容量DISK的容量,以及其它系统信息?

zhangyi520 2003-08-30 10:20:23
getdiskfreespace 不能算出容量,如何锝到系统信息.
...全文
94 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hcj2002 2003-09-22
  • 打赏
  • 举报
回复
不好意思,我的邮箱写错了.
hcj_2005@163.com
QQ:250484418
hcj2002 2003-09-22
  • 打赏
  • 举报
回复
可以用shell "C:\Program Files\Common Files\Microsoft Shared\msinfo32.exe"调用系统的系统信息的函数。如果要自己写用api函数。
要得到disk得大小:用 File System Object(FSO)对象模型,具体实现如下:
Dim fso As New FileSystemObject
Dim drv As Drive
Dim s As String
Dim c As Integer
Dim cf As Integer
Set drv = fso.GetDrive(fso.GetDriveName("C:"))
s = "Drive " & UCase("C:") & " " & drv.VolumeName & vbCrLf
s = s & " " & "总空间大小:" & FormatNumber(drv.TotalSize / 1024 / 1024 / 1024) & "GB "
s = s & "可用空间: " & FormatNumber(drv.FreeSpace / 1024 / 1024 / 1024) & "GB" & vbCrLf
Label9.Caption = Label9.Caption & s
另外,我写了一个得到系统信息的程序,如果要愿码的话,给我联系:
hcj_2005@164.com
道素 2003-09-22
  • 打赏
  • 举报
回复
Option Explicit

Private Declare Function GetDiskFreeSpace Lib "kernel32.dll" Alias _
"GetDiskFreeSpaceA" (ByVal lpRootPathName As String, _
lpSectorsPerCluster As Long, lpBytesPerSector As Long, _
lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) _
As Long

Private Declare Function GetDiskFreeSpaceEx Lib "kernel32.dll" Alias "GetDiskFreeSpaceExA" (ByVal lpDirectoryName As String, _
lpFreeBytesAvailableToCaller As ULARGE_INTEGER, _
lpTotalNumberOfBytes As ULARGE_INTEGER, _
lpTotalNumberOfFreeBytes As ULARGE_INTEGER) As Long

Private Declare Function GetVersionEx Lib "kernel32.dll" Alias _
"GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long

Private Declare Function GetLogicalDriveStrings Lib "kernel32.dll" _
Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long

Private Declare Sub CopyMemory Lib "kernel32.dll" Alias _
"RtlMoveMemory" (Destination As Any, Source As Any, _
ByVal Length As Long)

Private Type ULARGE_INTEGER
LowPart As Long
HighPart As Long
End Type

Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type

Private Const VER_PLATFORM_WIN32s = 0 ' Win 3.1 mit 32 Bit-Erweiterung
Private Const VER_PLATFORM_WIN32_WINDOWS = 1 ' Win NT/2000
Private Const VER_PLATFORM_WIN32_NT = 2 ' Win 9x

Private Sub Command1_Click()
Dim Retval As Long
Dim OS As OSVERSIONINFO
Dim InputRet As String
Dim Buffer As String

Buffer = Space(256)
Retval = GetLogicalDriveStrings(Len(Buffer), Buffer)
Buffer = Left$(Buffer, Retval)
Buffer = Replace(Buffer, "\" & vbNullChar, ", ")

InputRet = InputBox("输入要查看的分区 " & _
"(" & Buffer & ").", "容量空间信息", "C:\")
If InputRet = "" Or Len(InputRet) > 3 Then
MsgBox "输入无效或者取消了输入"
Exit Sub
End If

OS.dwOSVersionInfoSize = Len(OS)
Retval = GetVersionEx(OS)
If Retval = 0 Then
MsgBox "无法判断操作系统版本."
Exit Sub
End If


With OS
Select Case .dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If InStr(1, OS.szCSDVersion, "B") <> 0 Or _
.dwMinorVersion > 0 Then
' Win98 oder h鐬er
Call GetNewFreespace(InputRet)
Else
Call GetOldFreespace(InputRet)
End If
Case VER_PLATFORM_WIN32_NT
If .dwMajorVersion >= 4 Then
' WinNT 4/Win2000/WinXP
Call GetNewFreespace(InputRet)
Else
Call GetOldFreespace(InputRet)
End If
Case Else
MsgBox "Windows 3.x Version ."
End Select
End With
End Sub

Private Function GetOldFreespace(ByVal Root As String)
Dim Retval As Long
Dim SC As Long, BC As Long, FC As Long, TC As Long
Dim TSpace As Long, FSpace As Long, USpace As Long

Retval = GetDiskFreeSpace(Root, SC, BC, FC, TC)
TSpace = TC * SC * BC / 1024 / 1024
FSpace = FC * SC * BC / 1024 / 1024
USpace = TSpace - FSpace

MsgBox "总和: " & Format$(TSpace, "##.00 MB") & vbCrLf & _
"使用: " & Format$(USpace, "##.00 MB") & vbCrLf & _
"空闲: " & Format$(FSpace, "##.00 MB") & vbCrLf _
, , "当前查看分区 """ & Root & """"
End Function

Private Function GetNewFreespace(ByVal Root As String)
Dim Retval As Long
Dim CBytes As ULARGE_INTEGER
Dim TBytes As ULARGE_INTEGER
Dim FBytes As ULARGE_INTEGER
Dim CB As Currency
Dim TB As Currency
Dim FB As Currency
Dim UB As Currency

Retval = GetDiskFreeSpaceEx(Root, CBytes, TBytes, FBytes)
CopyMemory CB, CBytes, 8
CB = CB * 10000 / 1024 / 1024
CopyMemory TB, TBytes, 8
TB = TB * 10000 / 1024 / 1024
CopyMemory FB, FBytes, 8
FB = FB * 10000 / 1024 / 1024
UB = TB - FB

MsgBox "总和: " & Format$(TB, "##.00 MB") & vbCrLf & _
"使用: " & Format$(UB, "##.00 MB") & vbCrLf & _
"空闲: " & Format$(FB, "##.00 MB") & vbCrLf _
, , "当前查看分区 """ & Root & """"
End Function

goodname008 2003-08-30
  • 打赏
  • 举报
回复
' 能算出容量啊,用我编的这个函数试试。

Option Explicit
Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long
Public Enum DiskSpace
FreeSpace
TotalSpace
End Enum

Private Sub Command1_Click()
Debug.Print GetDiskSpace("c:", TotalSpace)
End Sub

' 获得指定磁盘的剩余容量/总容量
' Drive 为驱动器的根路径( 如"C:\"), Action 为获得磁盘容量的动作( 剩余容量/总容量 )
Function GetDiskSpace(ByVal Drive As String, ByVal Action As DiskSpace) As Double
Dim SecPerClt As Long, BytPerSec As Long, FreeClt As Long, TotalClt As Long
GetDiskFreeSpace Drive, SecPerClt, BytPerSec, FreeClt, TotalClt
If Action = FreeSpace Then
GetDiskSpace = CDbl(SecPerClt) * CDbl(BytPerSec) * CDbl(FreeClt)
Else
GetDiskSpace = CDbl(SecPerClt) * CDbl(BytPerSec) * CDbl(TotalClt)
End If
End Function
通过性能监控工具nmon的学习,清楚的了解Linux服务器资源CPU、磁盘、内存、网络、进程之间的关联,了解nmon监控结果的字段的含义以及影响,更重要的是通过熟悉监控结果中字段数据的由来,理清性能测试的分析思路,学会性能测试的分析方法。 课程内容:第一章:课程简介课程介绍课程大纲第二章:nmon介绍nmon简介nmon下载nmon安装nmon屏幕统计-交互模式nmon数据统计-数据收集模式nmon进程关闭nmon分析工具nmon数据文件解析第三章:nmon数据分析SYS_SUMM【系统资源汇总】AAA【服务器基本信息】BBBP【Linux执行的命令和结果】CPU_ALL【所有CPU数据的概述】CPU_SUMM【每个CPU的整体占用情况】CPU001【CPU001的每个时间点占用情况】DISK_SUMM【磁盘的吞吐量和IOPS】DISKBSIZE【磁盘块信息DISKBUSY【磁盘的繁忙情况】DISKREAD【磁盘的读取操作速率】DISKXFER【磁盘的I/0传输速率】JFSFILE【JFS文件空间使用百分比】MEM【内存】VM【虚拟内存】NET【网络数据传输速率】NETPACKET【网络数据包】PROC【进程】TOP【PID进程相关的CPU/内存等】 课程提供的下载资料:包含通过nmon收集的Linux服务器资源信息ecs-lc_220715_1019.nmon文件,大家在没有Linux服务器的情况下,可以通过对这个文件进行nmon数据解析和数据分析的学习。 

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧