1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Private Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString1 As Any) As Long
Private Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" (ByVal lpString As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, source As Any, ByVal size As Long)
Private Declare Function TabloDansLaDll Lib "DllTablo.dll" () As Long
Public Function StringDLL(AdresseVariable As Long) As String
StringDLL = Space$(lstrlen(AdresseVariable))
lstrcpy StringDLL, AdresseVariable
End Function
Public Function ArrayDLL(ByVal AdresseTabloDll As Long, ByRef LeTablo)
Dim Tablo() As Long
Dim AdrLongTablo As Long
Dim LongTablo As Integer
CopyMemory AdrLongTablo, ByVal AdresseTabloDll, 4
LongTablo = Val(StringDLL(AdrLongTablo)) + 1
ReDim Tablo(0 To LongTablo)
CopyMemory Tablo(0), ByVal AdresseTabloDll, LongTablo * 4
For i = 1 To UBound(Tablo())
ReDim Preserve LeTablo(i)
LeTablo(i) = StringDLL(Tablo(i))
Next
End Function
Private Sub Form_Load()
Dim LeTablo() As String
ArrayDLL TabloDansLaDll, LeTablo
For i = 1 To UBound(LeTablo())
Debug.Print LeTablo(i)
Next
End Sub |
Partager