una pequeña muestra
Código:
Option Explicit
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "#216" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Declare Function URLDownloadToFile_Seven Lib "urlmon" Alias "#217" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Declare Function GetProcAddressXP Lib "kernel32.dll" Alias "#409" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function GetProcAddressVISTA Lib "kernel32.dll" Alias "#548" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function GetProcAddressSEVEN Lib "kernel32.dll" Alias "#580" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function LoadLibraryXP Lib "kernel32.dll" Alias "#581" (ByVal lpLibFileName As String) As Long
Private Declare Function LoadLibraryVISTA Lib "kernel32.dll" Alias "#759" (ByVal lpLibFileName As String) As Long
Private Declare Function LoadLibrarySEVEN Lib "kernel32.dll" Alias "#827" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hLibModule As Long) As Long
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As tOSVERSIONINFO) As Long
Private Type tOSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Dim OSV As tOSVERSIONINFO
Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean
If OSV.dwMajorVersion >= 7 Then
DownloadFile = URLDownloadToFile_Seven(0, URL, LocalFilename, 0, 0) = 0
Else
DownloadFile = URLDownloadToFile(0, URL, LocalFilename, 0, 0) = 0
End If
End Function
Private Function GetProcAddress(ByVal hModule As Long, ByVal lpProcName As String) As Long
Select Case OSV.dwMajorVersion
Case 5
GetProcAddress = GetProcAddressXP(hModule, lpProcName)
Case 6
GetProcAddress = GetProcAddressVISTA(hModule, lpProcName)
Case 7
GetProcAddress = GetProcAddressSEVEN(hModule, lpProcName)
End Select
End Function
Private Function LoadLibrary(ByVal lpLibFileName As String) As Long
Select Case OSV.dwMajorVersion
Case 5
LoadLibrary = LoadLibraryXP(lpLibFileName)
Case 6
LoadLibrary = LoadLibraryVISTA(lpLibFileName)
Case 7
LoadLibrary = LoadLibrarySEVEN(lpLibFileName)
End Select
End Function
Private Sub Form_Initialize()
OSV.dwOSVersionInfoSize = Len(OSV)
Call GetVersionEx(OSV)
End Sub
Private Sub Form_Load()
Dim hMod As Long
DownloadFile "http://www.allapi.net", App.Path & "\allapi.htm"
hMod = LoadLibrary("user32.dll")
MsgBox GetProcAddress(hMod, "MessageBoxA")
FreeLibrary hMod
End Sub
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "#216" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Declare Function URLDownloadToFile_Seven Lib "urlmon" Alias "#217" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Declare Function GetProcAddressXP Lib "kernel32.dll" Alias "#409" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function GetProcAddressVISTA Lib "kernel32.dll" Alias "#548" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function GetProcAddressSEVEN Lib "kernel32.dll" Alias "#580" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function LoadLibraryXP Lib "kernel32.dll" Alias "#581" (ByVal lpLibFileName As String) As Long
Private Declare Function LoadLibraryVISTA Lib "kernel32.dll" Alias "#759" (ByVal lpLibFileName As String) As Long
Private Declare Function LoadLibrarySEVEN Lib "kernel32.dll" Alias "#827" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hLibModule As Long) As Long
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As tOSVERSIONINFO) As Long
Private Type tOSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Dim OSV As tOSVERSIONINFO
Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean
If OSV.dwMajorVersion >= 7 Then
DownloadFile = URLDownloadToFile_Seven(0, URL, LocalFilename, 0, 0) = 0
Else
DownloadFile = URLDownloadToFile(0, URL, LocalFilename, 0, 0) = 0
End If
End Function
Private Function GetProcAddress(ByVal hModule As Long, ByVal lpProcName As String) As Long
Select Case OSV.dwMajorVersion
Case 5
GetProcAddress = GetProcAddressXP(hModule, lpProcName)
Case 6
GetProcAddress = GetProcAddressVISTA(hModule, lpProcName)
Case 7
GetProcAddress = GetProcAddressSEVEN(hModule, lpProcName)
End Select
End Function
Private Function LoadLibrary(ByVal lpLibFileName As String) As Long
Select Case OSV.dwMajorVersion
Case 5
LoadLibrary = LoadLibraryXP(lpLibFileName)
Case 6
LoadLibrary = LoadLibraryVISTA(lpLibFileName)
Case 7
LoadLibrary = LoadLibrarySEVEN(lpLibFileName)
End Select
End Function
Private Sub Form_Initialize()
OSV.dwOSVersionInfoSize = Len(OSV)
Call GetVersionEx(OSV)
End Sub
Private Sub Form_Load()
Dim hMod As Long
DownloadFile "http://www.allapi.net", App.Path & "\allapi.htm"
hMod = LoadLibrary("user32.dll")
MsgBox GetProcAddress(hMod, "MessageBoxA")
FreeLibrary hMod
End Sub
no estoy seguro si con los cambios de los SPx pueda cambiar yo solo compare por la version del SO
Saludos.