通过序列号识别CD-ROM

我对CD标识感兴趣。

我的问题:

有没有可以编程检索的序列号?

编辑(已解决):

  1. VB版本
  2. Delphi版本

在VB中试试这个代码

Private Declare Function GetVolumeInformation Lib "coreel32" 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 Sub Form_Load() Dim Serial As Long 'Get the volume information GetVolumeInformation "d:\", vbNullString, 255, Serial, 0, 0, vbNullString, 255 MsgBox Hex(Serial) End Sub 

这应该作为您的概念证明。 你可以适应你的语言选择。

采取从这里: VB论坛

Windows.GetVolumeInformation语法

  GetVolumeInformation( lpRootPathName: PChar; {the path to the root directory} lpVolumeNameBuffer: PChar; {the buffer receiving the volume name} nVolumeNameSize: DWORD; {the maximum size of the buffer} lpVolumeSerialNumber: PDWORD; {a pointer to the volume serial number} var lpMaximumComponentLength: DWORD; {maximum file component name} var lpFileSystemFlags: DWORD; {file system flags} lpFileSystemNameBuffer: PChar; {the buffer receiving the file system name} nFileSystemNameSize: DWORD {the maximum size of the file system name} ): BOOL; {returns TRUE or FALSE} 

德尔福港(稍微改编自安德烈G的职位)

GetCDROMSerial片段:

  function GetCDROMSerial(AVolName: Char ) : DWord; var Dummy1, Dummy2 : DWord; begin GetVolumeInformation( PChar( AVolName+':' ), nil, 0, @Result, Dummy1, Dummy2, nil, 0 ); end; 

用法示例:

  ShowMessage(Format('%X', [GetCDROMSerial('F')]));