Here it is, but you should also visit my API site that is dedicated to API calls in either C, VB or Delphi.
===========================================================
Declare Function LogonUser _
Lib "advapi32" _
Alias "LogonUserA" ( _
ByVal lpszUser As String, _
ByVal lpszDomain As String, _
ByVal lpszPass As String, _
ByVal dwLogonType As Long, _
ByVal dwLogonProvider As Long, _
Handle As Long) As Long
Declare Function CloseHandle _
Lib "kernel32" (Handle As Long) As Long
Global Const LOGON32_LOGON_INTERACTIVE = 2
Global Const LOGON32_LOGON_NETWORK = 3
Global Const LOGON32_LOGON_BATCH = 4
Global Const LOGON32_LOGON_SERVICE = 5
Global Const LOGON32_PROVIDER_DEFAULT = 0
Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Const FORMAT_MESSAGE_ALLOCATE_BUFFER = &H100
Const FORMAT_MESSAGE_FROM_HMODULE = &H800
Const NERR_BASE = 2100
Const MAX_NERR = NERR_BASE + 899 ' This is the last error in
' NERR range.
Const LOAD_LIBRARY_AS_DATAFILE = &H2
Declare Function LoadLibraryEx _
Lib "kernel32" _
Alias "LoadLibraryExA" ( _
ByVal lpLibFileName As String, _
ByVal hFile As Long, _
ByVal dwFlags As Long) As Long
Declare Function FreeLibrary Lib "kernel32" _
(ByVal hLibModule As Long) As Long
Declare Function FormatMessage _
Lib "Kernel32.dll" _
Alias "FormatMessageA" ( _
ByVal Flags As Long, _
ByVal Source As Long, _
ByVal MessageID As Long, _
ByVal LanguageID As Long, _
ByVal Buffer As String, _
ByVal Size As Long, _
args As Any) As Long
Declare Function LocalFree _
Lib "Kernel32.dll" _
( _
ByVal Handle As Long) As Long
Public Function Logon(strUser As String, _
strDomain As String, _
strPass As String, _
strError As String) As Long
Dim lngError As Long
Dim lngHandle As Long
lngError = LogonUser( _
strUser, _
strDomain, _
strPass, _
LOGON32_LOGON_INTERACTIVE, _
LOGON32_PROVIDER_DEFAULT, _
lngHandle)
If lngError = 0 Then
strError = ErrorMessage(Err.LastDllError)
Logon = -1
Else
Logon = 0
lngError = CloseHandle(lngHandle)
End If
End Function
Function ErrorMessage(lCode As Long) As String
Dim lngError As Long
Dim ptrBuffer As Long
Dim strMessage As String
Dim hModule As Long
Dim lngFlags As Long
Dim str As String
lngFlags = FORMAT_MESSAGE_FROM_SYSTEM
If (lCode >= NERR_BASE And lCode <= MAX_NERR) Then
hModule = LoadLibraryEx("netmsg.dll", 0&, _
LOAD_LIBRARY_AS_DATAFILE)
If (hModule <> 0) Then
lngFlags = lngFlags Or FORMAT_MESSAGE_FROM_HMODULE
End If
End If
strMessage = Space$(256)
lngError = FormatMessage( _
lngFlags, _
hModule, _
lCode, _
0&, _
strMessage, _
256, _
0&)
If (hModule <> 0) Then
lngError = FreeLibrary(hModule)
End If
ErrorMessage = strMessage
End Function