问了,找了很久都没有办法解决的刻录问题,几经周折后,取了一个可行的办法。介绍给有兴趣的人。
如果你手上有 DirectCD 5.0 以上版本,那么就能使用 SHFileOperation 函数直接向CD-R 或者CD-RW 写文件。
函数声明如下:
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type
Const FO_COPY = &H2
Const FOF_ALLOWUNDO = &H40
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
对于一张新的刻录盘,必需先调用 DirectCD.exe ,使用它的“格式化”或者“标记光盘为可写”的功能,总的目的就是让刻录盘可写,然后使用 SHFileOperation 函数直接向光盘写文件就行。
用DirectCD.exe 格式化后的刻录盘同时可以使用GetVolumeInformation和GetDiskFreeSpaceEx函数获取光盘信息,函数声明如下:
Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As Any, lpTotalNumberOfBytes As Any, lpTotalNumberOfFreeBytes As Any) As Long
希望对需要写刻录功能的人能有所帮助
刻录光盘的源代码研究
最新推荐文章于 2023-04-10 11:15:00 发布