📄 磁盘管理.txt
字号:
磁盘管理功能:
在主界面加
Private Sub Timer3_Timer()
' 管理磁盘的使用
HandleDiskUse
End Sub
' 处理磁盘使用
Private Sub HandleDiskUse()
Dim i As Integer
Dim fileName As String
fileName = "S1N12F9999-12-31H15-05-34T16-05-00.mp4"
Dim lDiskFreeSpace As Long
ldiskfreespace = gGetDiskSpaceLeft(strCapDriver + "\") '录像文件路径
Label3.Caption = "当前录像磁盘剩余空间:" & ldiskfreespace
If ldiskfreespace < gDiskCanLeft Then '录像路径空间不足
If MsgBox("录像磁盘空间不足,是手动删除还是系统自动删除录像文件", vbInformation + vbYesNo, "磁盘管理") = vbYes Then
frmDisk.Show
Else
File.Path = strCapDriver + "\save"
File.Refresh
Do While i < File.ListCount
If Format(strGetFileDate(File.List(i)), "yyyy-mm-dd") < Format(strGetFileDate(fileName), "yyyy-mm-dd") Then
fileName = File.List(i)
End If
i = i + 1
Loop
If fileName <> "S1N12F9999-12-31H15-05-34T16-05-00.mp4" Then
Kill File.Path & "\" & fileName
End If
End If
End If
End Sub
'获得文件名中的录像日期
'文件形式为S2F2000-10-13H10-20-16T10-07-25.mpg
'文件形式为S1N12F2004-05-11H15-05-34T16-05-00.mp4
Private Function strGetFileDate(ByVal sFileName As String) As String
Dim iBeginPos As Integer, iEndPos As Integer
iBeginPos = InStr(UCase$(sFileName), "F")
iEndPos = InStr(UCase$(sFileName), "H")
If iEndPos > iBeginPos And iBeginPos <> 0 Then
strGetFileDate = Mid(sFileName, iBeginPos + 1, iEndPos - iBeginPos - 1)
Else
strGetFileDate = ""
End If
End Function
在模块里加以下内容:
定义一个全局变量:
' 认定磁盘空间不足的磁盘剩余空间量,对单个盘符而言
Public gDiskCanLeft As Integer
' ------------返回给定路径所在盘剩余空间--M----------6月28日加的-------------------------
Public Function gGetDiskSpaceLeft(ByVal sPath As String) As Long
Dim sDrive As String
Dim lFreeToCaller As Long, lTotalBytes As Long, lTotalFreeBytes As Long
sDrive = sPath
sDrive = left(Trim(sDrive), 1) & ":\"
Ser_GetDiskSpace sDrive, lFreeToCaller, lTotalBytes, lTotalFreeBytes
gGetDiskSpaceLeft = lTotalFreeBytes
End Function
Public Function ReadInt(Section As String, key As String) As Long
Dim ReturnLng As Long
ReadInt = 0
ReturnLng = GetPrivateProfileInt(Section, key, 0, IniFileName)
If ReturnLng = 0 Then
ReturnLng = GetPrivateProfileInt(Section, key, 1, IniFileName)
If ReturnLng = 1 Then
ErrorMsg = "不能读取"
Exit Function
End If
End If
ReadInt = ReturnLng
End Function
' 读取系统配置文件 xtpz.ini
'
Public Sub ReadXTPZ()
SpecifyIni App.Path + "\XTPZ.ini"
iServerID = ReadInt("系统配置", "服务器号")
strServerName = ReadString("系统配置", "服务器名", 20)
strCapDriver = ReadString("系统配置", "录象盘符", 10)
gDiskCanLeft = ReadInt("系统配置", "允许剩余的磁盘量(M)")
iAutoOSd = ReadInt("系统配置", "自动设置字幕")
Debug.Print iServerID & " " & strServerName & " " & strCapDriver
End Sub
在vc中加一个函数,重新编译dll
先定义
/************************以下是郭锐写的内容************************************
/************************************************************
Function :Ser_GetDiskSpace
Description :得到当前的磁盘空间
Input :
Return :空间值
************************************************************/
int _stdcall Ser_GetDiskSpace(LPCTSTR sPath, PINT lpFreeBytesAvailableToCaller, PINT lpTotalNumberOfBytes, PINT lpTotalNumberOfFreeBytes )
{
ULARGE_INTEGER FreeBytesAvailableToCaller;
ULARGE_INTEGER TotalNumberOfBytes;
ULARGE_INTEGER TotalNumberOfFreeBytes;
GetDiskFreeSpaceEx(sPath, &FreeBytesAvailableToCaller, &TotalNumberOfBytes, &TotalNumberOfFreeBytes );
*lpFreeBytesAvailableToCaller = FreeBytesAvailableToCaller.QuadPart / 1048576L;
*lpTotalNumberOfBytes = TotalNumberOfBytes.QuadPart / 1048576L;
*lpTotalNumberOfFreeBytes =TotalNumberOfFreeBytes.QuadPart / 1048576L;
return 0;
}
在系统设置窗口里加
Label:允许剩余的磁盘量(M)(应该小于10000M):
textbox:txtDiskCanLeft
在form_load下在readxtpz后加txtDiskCanLeft.Text = gDiskCanLeft
在保存按钮里加
WriteString "系统配置", "允许剩余的磁盘量(M)", txtDiskCanLeft.Text
ReadXTPZ
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -