C´est bon ca:
Option Explicit
Private Declare Sub CopyMemory Lib " kernel32" Alias " RtlMoveMemory" ( dest As Any, source As Any, ByVal numBytes As Long)
Private Declare Function RegOpenKeyEx Lib " advapi32.dll" Alias " RegOpenKeyExA" ( ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib " advapi32.dll" ( ByVal hKey As Long) As Long
Private Declare Function RegQueryValueEx Lib " advapi32.dll" Alias " RegQueryValueExA" ( ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Function GetDirectXVersion() As String
Dim handle As Long
Dim resString As String
Dim strVersion As String
Dim resBinary() As Byte
If RegOpenKeyEx(&80000002, " SOFTWARE\Microsoft\DirectX", 0, &20019, handle) Then Exit Function
ReDim resBinary(1023) As Byte
Call RegQueryValueEx(handle, " Version", 0, 0, resBinary(0), 1024)
resString = Space$(1023)
CopyMemory ByVal resString, resBinary(0), 1023
RegCloseKey handle
resString = Left(resString, 12)
Select Case resString
Case " 4.02.0095"
GetDirectXVersion = " 1.0"
Case " 4.03.00.1096"
GetDirectXVersion = " 2.0"
Case " 4.04.0068", " 4.04.0069"
GetDirectXVersion = " 3.0"
Case " 4.05.00.0155"
GetDirectXVersion = " 5.0"
Case " 4.05.01.1721", " 4.05.01.1998"
GetDirectXVersion = " 5.0"
Case " 4.06.02.0436"
GetDirectXVersion = " 6.0"
Case " 4.07.00.0700"
GetDirectXVersion = " 7.0"
Case " 4.07.00.0716"
GetDirectXVersion = " 7.0a"
Case " 4.08.00.0400"
GetDirectXVersion = " 8.0"
Case " 4.08.01.0881", " 4.08.01.0810"
GetDirectXVersion = " 8.1"
Case " 4.09.0000.0900"
GetDirectXVersion = " 9.0"
Case " 4.09.0000.0901"
GetDirectXVersion = " 9.0a"
Case " 4.09.0000.0902"
GetDirectXVersion = " 9.0b"
End Select
End Function
Private Sub Form_Load()
MsgBox " DirectX Version: " & GetDirectXVersion
End Sub