Identificación de CD-ROM a través del número de serie
-
13-11-2019 - |
Pregunta
Estoy interesado en la identificación de CD.
MI PREGUNTA:
¿Hay un número de serie que se puede recuperar programáticamente?
Editar (resuelto):
- VB versión
- versiones de Delphi
Solución
Pruebe este código en VB
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 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
Esto debería servir como una prueba de concepto para usted.Puede adaptar esto a su idioma de elección.
Tomado desde aquí: Foros VB
Otros consejos
Windows.GetVolumeInformation Syntax
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}
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}
Puerto de Delphi (ligeramente adaptado de Andrei g Post)
getcdromserial SNIPPET:
function GetCDROMSerial(AVolName: Char ) : DWord;
var
Dummy1, Dummy2 : DWord;
begin
GetVolumeInformation(
PChar( AVolName+':' ),
nil,
0,
@Result,
Dummy1,
Dummy2,
nil,
0
);
end;
Muestra de uso:
ShowMessage(Format('%X', [GetCDROMSerial('F')]));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow