如何获取光驱中光盘的盘号?(50分)

  • 主题发起人 charlyisme
  • 开始时间
C

charlyisme

Unregistered / Unconfirmed
GUEST, unregistred user!
如何获取光驱中光盘的盘号?
比如光驱盘符为G:(我不是问光驱盘符),光盘A的盘号为'WIN2KInstallA'。
光盘B的盘号为'WIN2KInstallB'。
(最好用WIN32 API)
 
function GetCDRomLabel(ADrive: string): string;
 
哈哈,刚才忘贴完了
function GetCDRomLabel(ADrive: string): string;
var
VolumeName : array[0..255] of char;
FileSystemType : array[0..255] of char;
SerialNum : DWORD;
MaxFilenameLength : DWORD;
Flags : DWORD;
begin
//Result := '驱动器中没有CDRom';
if (GetVolumeInformation(PChar(ADrive),
VolumeName,
256,
@SerialNum,
MaxFilenameLength,
Flags,
FileSystemType,
256)) then
Result := VolumeName;
end;

 
谢谢naughtboy, 再问一下:
怎么能获取光盘的其他信息,比如文件系统(CDFS),已用空间等。
呵呵为什么要注释掉这句//Result := '驱动器中没有CDRom'??
 
1.文件系统-看到那个FileSystemType了么?就是那个拉
2.disksize(drive)-diskfree(drive),具体自己看帮助吧
3.这是volumename返回为空时的提示信息
 
to naughtboy:
disksize/diskfree不是WIN32 API吧,有没有对应的API呢?
不好意思,多问一句。
 
简单点的方法
winexec('vol f:>c:/volume.txt',sw_hide);
就可以了,什么系统什么分区都行。
 
GetDiskFreeSpaceEx
 
to naughtboy:谢谢你,呵呵,我查了一下API,除了你说的GetDiskFreeSpaceEx,以及提到的
GetDriveType,没有与disksize相当的win32 的API了,还要请教一二!
 
倒,你看这个函数的帮助,仔细看
BOOL GetDiskFreeSpaceEx(

LPCTSTR lpDirectoryName, // pointer to directory name on disk of interest
PULARGE_INTEGER lpFreeBytesAvailableToCaller, // pointer to variable to receive free bytes on disk available to the caller
PULARGE_INTEGER lpTotalNumberOfBytes, // pointer to variable to receive number of bytes on disk
PULARGE_INTEGER lpTotalNumberOfFreeBytes // pointer to variable to receive free bytes on disk
);
 
多人接受答案了。
 
顶部