jeg benytter et API kald til at hente produkt navnet i en USB HID enhed
i mit .bas modul har jeg indsat følgende kode:
Public Declare Function HidD_GetProductString _
Lib "HID.dll" _
(ByVal HidDeviceObject As Long, _
ByVal Buffer As Long, _
ByVal BufferLength As Long) _
As Boolean
'*** lidt forklaring:
'***
'*** Buffer: Pointer to a caller-allocated buffer that the routine uses to return the
'*** requested product string. The routine returns a NULL-terminated wide
'*** character string.
'***
'*** BufferLength: Specifies the length, in bytes, of a caller-allocated buffer provided at Buffer.
'*** If the buffer is not large enough to return the entire NULL-terminated
'*** embedded string, the routine returns nothing in the buffer.
Problemet opstår når jeg skal kalde funktionen fra en sub, det første agument [HidDeviceObject] har jeg styr på, men hvordan opretter jeg den buffer, måske har det noget at gøre med at VB bruger pointer-typen: BSTR og API kaldet retunere i pointer typen LPWSTR
her ses mit kald:
MsgBox (HidD_GetProductString(HIDHandle, ???????, 254))
er der nogen der ved hvordan jeg læser det produkt navnet????
venlig hilsen Joachim Boll
Du kan gøre det på følgende måde:
Dim sBuf As String
Dim lLen As Long
sBuf = String$(255, 0)
lLen = 255
HidD_GetProductString(HIDHandle, sBuf, lLen)
MsgBox(sBuf);
/Michael.
Jeg har prøvet ovenstående kode, problemet er at sBuf er en string og funktionen forventer en
"long"
Måske skal man oprette en string eks. sBuf og så sende pointeren i et "long" format så kan routinen aflevere string'en vha. pointeren ??
men jeg er meget åben for gode ide'er
VH Joachim Boll