Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1592to1596
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Festplatten-Seriennummer auslesen mit 64 Bit-Versi

Festplatten-Seriennummer auslesen mit 64 Bit-Versi
05.12.2017 11:44:06
Manni
Hallo!
Möchte gerne die Festplatten-Seriennummer mit VBA, Excel 2016 64 Bit(!) auslesen.
Ich habe versucht folgendes Makro von der 32 Bit-Version umzuschreiben:
 Declare Function GetVolumeInformationA Lib "kernel32" _
(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

Sub SerienNummer()
Dim SerialNumber As Long
GetVolumeInformationA "C:\", vbNullString, 0, SerialNumber, _
0, 0, vbNullString, 0
MsgBox SerialNumber
End Sub

'-----------------
Und zwar so:

Declare PtrSafe Function GetVolumeInformationA Lib "kernel32" _
(ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As String, _
ByVal nVolumeNameSize As LongPtr, _
lpVolumeSerialNumber As LongPtr, _
lpMaximumComponentLength As LongPtr, _
lpFileSystemFlags As LongPtr, _
ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As LongPtr

Sub SerienNummer()
Dim SerialNumber As LongPtr
GetVolumeInformationA "C:\", vbNullString, 0, SerialNumber, _
0, 0, vbNullString, 0
MsgBox SerialNumber
End Sub

'-------------
Jetzt bekomme ich aber die Fehlermeldung "object variable or with block variable not set".
Danke für die Hilfe!
Manfred

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ohne API
05.12.2017 12:17:35
RPP63
Moin!
Ich mache dies so:
Function Seriennummer_auslesen(LW As String)
' benötigt Verweis auf Microsoft Scripting Runtime 
    Dim myFileSystemObject As New FileSystemObject, myDrive As Drive
    Set myDrive = myFileSystemObject.GetDrive(LW)
    Seriennummer_auslesen = myDrive.SerialNumber
    Set myDrive = Nothing
    Set myFileSystemObject = Nothing
End Function
Den Laufwerksbuchstaben übergebe ich As String ohne ":\"
Debug.Print Seriennummer_auslesen("C")
Gruß Ralf
Anzeige
AW: Festplatten-Seriennummer auslesen mit 64 Bit-Versi
05.12.2017 13:01:39
Nepumuk
Hallo Manfred,
du darfst nicht stur alle Long in LonPtr umwandeln. Nur Pointer und Handles sind von diesem Typ.
Option Explicit

Private Declare PtrSafe Function GetVolumeInformationA Lib "kernel32.dll" ( _
    ByVal lpRootPathName As String, _
    ByVal lpVolumeNameBuffer As String, _
    ByVal nVolumeNameSize As Long, _
    ByRef lpVolumeSerialNumber As Long, _
    ByRef lpMaximumComponentLength As Long, _
    ByRef lpFileSystemFlags As Long, _
    ByVal lpFileSystemNameBuffer As String, _
    ByVal nFileSystemNameSize As Long) As Long

Sub SerienNummer()
    Dim SerialNumber As Long
    Call GetVolumeInformationA("C:\", vbNullString, 0, SerialNumber, _
        0, 0, vbNullString, 0)
    MsgBox SerialNumber
End Sub

Gruß
Nepumuk
Anzeige
AW: Festplatten-Seriennummer auslesen mit 64 Bit-Versi
05.12.2017 13:01:39
Nepumuk
Hallo Manfred,
du darfst nicht stur alle Long in LonPtr umwandeln. Nur Pointer und Handles sind von diesem Typ.
Option Explicit

Private Declare PtrSafe Function GetVolumeInformationA Lib "kernel32.dll" ( _
    ByVal lpRootPathName As String, _
    ByVal lpVolumeNameBuffer As String, _
    ByVal nVolumeNameSize As Long, _
    ByRef lpVolumeSerialNumber As Long, _
    ByRef lpMaximumComponentLength As Long, _
    ByRef lpFileSystemFlags As Long, _
    ByVal lpFileSystemNameBuffer As String, _
    ByVal nFileSystemNameSize As Long) As Long

Sub SerienNummer()
    Dim SerialNumber As Long
    Call GetVolumeInformationA("C:\", vbNullString, 0, SerialNumber, _
        0, 0, vbNullString, 0)
    MsgBox SerialNumber
End Sub

Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige