VB-код для захвата пользователя от Windows, который будет использоваться в Access (версия 2020, 64 бит) - PullRequest
0 голосов
/ 13 января 2020

Я создал приложение в Access 2016 32 Bit, которое в нескольких запросах на обновление регистрирует пользователя, захватывая его из Windows. Сейчас мы переходим на Windows 10 64 бит, и код не совместим. Вот код, который у меня есть:

Private Declare Function apiGetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal IpBuffer As 
String, nSize As Long) As Long
Function fOSUserName() As String
'Returns the network login name'
Dim IngLen As Long, IngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
IngLen = 255
IngX = apiGetUserName(strUserName, IngLen)
If (IngX > 0) Then
    fOSUserName = Left$(strUserName, IngLen - 1)
Else
    fOSUserName = vbNullString
End If

End Function

Может кто-нибудь помочь мне с подобным решением, которое работает в 64-битной версии?

Спасибо.

1 Ответ

0 голосов
/ 15 января 2020

Вам необходимо перенести вызовы API, чтобы сделать его совместимым с 64-разрядными. Чтение Миграция Windows API-вызовов в VBA на 64-битный

Правильный синтаксис:

Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Также см. Преобразование Windows API вызов 64-битного в Excel VBA .

...