Моя программа vb6 работала на 32-битной версии. Теперь мне нужно переместить его на 64-битную версию.
Библиотека, которую я объявляю ниже, система, похоже, не может ее получить. Объявляем:
Public Declare Function LogonUser Lib "advapi32.dll" _
Alias "LogonUserA" (ByVal lpszUsername As String, _
ByVal lpszDomain As String, ByVal lpszPassword As String, _
ByVal dwLogonType As Long, ByVal dwLogonProvider As Long, _
phToken As Long) As Long
Public Declare Function ImpersonateLoggedOnUser Lib "advapi32.dll" (ByVal hToken As Long) As Long
Public Declare Function RevertToSelf Lib "advapi32.dll" () As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Выполнить код:
Public Sub Logon(ByVal strAdminUser As String, ByVal _
strAdminPassword As String, ByVal strAdminDomain As String)
Dim lngTokenHandle As Long
Dim lngLogonType As Long
Dim lngLogonProvider As Long
Dim blnResult As Boolean
lngLogonType = 2
lngLogonProvider = 0
blnResult = RevertToSelf()
blnResult = LogonUser(strAdminUser, strAdminDomain, strAdminPassword, _
lngLogonType, lngLogonProvider, _
lngTokenHandle)
blnResult = ImpersonateLoggedOnUser(lngTokenHandle)
CloseHandle (lngTokenHandle)
End Sub
Я получил сообщение об ошибке
Error 91:Object variable or With block variable not set
Почти люди говорят, что нужно добавить "ptrsafe" после Declare, но в vb6 нет ptrsafe.
Как я могу объявить функцию lib без ptrsafe в 64-битной и vb6?
PtrSafe
,LongPtr
,LongLong
,CLngLng
. - person ThunderFrame   schedule 15.08.2017