Newsgroup: it.comp.appl.access
Titolo: Errore di runtime: '453'

Sto concludendo un'applicazione Access con installata la versione 2003
su piattaforma Vista.
Riporto la parte del codice che genera un errore:
--------------------------------------Nel modulo generico:
Option Compare Database
Option Explicit
Declare Function trovaversione Lib "kernel32" Alias
"getversionExA" (lpversioninformation As OSVERSIONINFO) As Long
Public Const PIATTAFORMA_WINDOWS = 1
Public Const PIATTAFORMA_WINDOWS_NT = 2
Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Sub controllaSO()
Dim tOSVerInfo As OSVERSIONINFO, lngValRest As Long
Dim strVerWin As String, strVerComp As String
Dim strNomeSO As String
tOSVerInfo.dwOSVersionInfoSize = Len(tOSVerInfo)
lngValRest = trovaversione(tOSVerInfo)
strVerWin = tOSVerInfo.dwMajorVersion & "." &
tOSVerInfo.dwMinorVersion
strVerComp = tOSVerInfo.dwBuildNumber And &HFFFF&
Select Case tOSVerInfo.dwPlatformId
Case PIATTAFORMA_WINDOWS
strNomeSO = "Windows 9x"
Case PIATTAFORMA_WINDOWS_NT
strNomeSO = "Windows NT"
Case Else
strNomeSO = "Sconosciuto"
End Select
End Sub
------------------------------------Nel modulo di classe del form:
Option Compare Database
Private Sub Form_Open(Cancel As Integer)
Dim testopiatt As String
Dim testovers As String
Dim testocomp As String
controllaSO
testopiatt = strNomeSO
testovers = strVerWin
testocomp = strVerComp
End Sub
----------------------------------
All'apertura del form, mi da il seguente errore di runtime: '453'
Impossibile trovare il punto di ingresso getversionExA della DLL in
kernel32.
Non ho assolutamente idea di come rimediare e vi chiedo urgentemente
un aiuto in proposito. Grazie anticipatamente.

 "getversionExA" (lpversioninformation As OSVERSIONINFO) As Long
E' in pratica un problema di dichiarazione della funzione. I tipi di dati 
non coincindo con l'api originaria
E' problema di copia e incolla ;-)
Ciao



Senza neanche verificare ti incollo
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" 
(lpVersionInformation As OSVERSIONINFO) As Long
Private Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type
Private Sub Form_Load()
    Dim OSInfo As OSVERSIONINFO, PId As String
    'KPD-Team 1998
    'URL: 
http://www.allapi.net/
    'KPD...@Allapi.net
    'Set the graphical mode to persistent
    'Set the structure size
    OSInfo.dwOSVersionInfoSize = Len(OSInfo)
    'Get the Windows version
    ret& = GetVersionEx(OSInfo)
    'Chack for errors
    If ret& = 0 Then MsgBox "Error Getting Version Information": Exit Sub
    'Print the information to the form
    Select Case OSInfo.dwPlatformId
        Case 0
            PId = "Windows 32s "
        Case 1
            PId = "Windows 95/98"
        Case 2
            PId = "Windows NT "
    End Select
    Debug.Print "OS: " + PId
    Debug.Print "Win version:" + Str$(OSInfo.dwMajorVersion) + "." + 
LTrim(Str(OSInfo.dwMinorVersion))
    Debug.Print "Build: " + Str(OSInfo.dwBuildNumber)
End Sub

 - Mostra testo citato -
Grazie infinite. Non sono esperto API. Ho adattato il codice che mi
hai postato ed ora è tutto ok.