Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 22.12.2009
Сообщений: 5
1

Форма ввода логина/пароля (CredUIPromptForWindowsCredentials + CredPackAuthenticationBuffer)

14.07.2022, 09:46. Показов 485. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Пишу форму запроса логина/пароля в VBA, никак не могу вывести форму с предварительно заполненным именем пользователя. Подскажите, пожалуйста, что не так, что забыл
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Option Explicit
 
#If VBA7 Then
    Private Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    Private Declare PtrSafe Function CredUIPromptForWindowsCredentials Lib "credui" Alias "CredUIPromptForWindowsCredentialsW" (ByRef pUiInfo As CREDUI_INFO, ByVal dwAuthError As Long, ByRef pulAuthPackage As LongPtr, ByRef pvInAuthBuffer As Any, ByVal ulInAuthBufferSize As Long, ByRef ppvOutAuthBuffer As Any, pulOutAuthBufferSize As Long, ByRef iSave As Long, ByVal dwFlags As Long) As Long
    Private Declare PtrSafe Function CredUnPackAuthenticationBuffer Lib "credui" Alias "CredUnPackAuthenticationBufferW" (ByVal dwFlags As Long, ByVal pAuthBuffer As LongPtr, ByVal cbAuthBuffer As Long, ByVal pszUserName As LongPtr, ByRef pcchMaxUserName As Long, ByVal pszDomainName As LongPtr, ByRef pcchMaxDomainName As Long, ByVal pszPassword As LongPtr, ByRef pcchMaxPassword As Long) As Long
    Private Declare PtrSafe Function CredPackAuthenticationBuffer Lib "credui" Alias "CredPackAuthenticationBufferA" (ByVal dwFlags As Long, ByRef pszUserName As Any, ByRef pszPassword As Any, ByRef pPackedCredentials As Any, ByRef pcbPackedCredentials As Long) As Long
#Else
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    Private Declare Function CredUIPromptForWindowsCredentials Lib "CredUI" Alias "CredUIPromptForWindowsCredentialsW" (ByRef pUiInfo As CREDUI_INFO, ByVal dwAuthError As Long, ByRef pulAuthPackage As Long, ByVal pvInAuthBuffer As Any, ByVal ulInAuthBufferSize As Long, ByRef ppvOutAuthBuffer As Any, pulOutAuthBufferSize As Long, ByRef iSave As Long, ByVal dwFlags As Long) As Long
    Private Declare Function CredUnPackAuthenticationBuffer Lib "CredUI" Alias "CredUnPackAuthenticationBufferW" (ByVal dwFlags As Long, ByVal pAuthBuffer As Long, ByVal cbAuthBuffer As Long, ByVal pszUserName As Long, ByRef pcchMaxUserName As Long, ByVal pszDomainName As Long, ByRef pcchMaxDomainName As Long, ByVal pszPassword As Long, ByRef pcchMaxPassword As Long) As Long
    Private Declare Function CredPackAuthenticationBuffer Lib "credui" Alias "CredPackAuthenticationBufferW" (ByVal dwFlags As Long, ByRef pszUserName As Any, ByRef pszPassword As Any, ByRef pPackedCredentials As Any, ByRef pcbPackedCredentials As Long) As Long
#End If
Private Type CREDUI_INFO
    cbSize As Long
    #If VBA7 Then
        hwndParent As LongPtr
        pszMessageText As LongPtr
        pszCaptionText As LongPtr
    #Else
        hwndParent As Long
        pszMessageText As Long
        pszCaptionText As Long
    #End If
    hbmBanner As Long
End Type
 
Public Sub GetCred()
    
    Dim pUiInfo As CREDUI_INFO
    
    Dim pulOutAuthBufferSize As Long
    Dim pulInAuthBufferSize As Long
    
    #If VBA7 Then
        Dim ppvOutAuthBuffer As LongPtr
        Dim ppvInAuthBuffer As LongPtr
    #Else
        Dim ppvOutAuthBuffer As Long
        Dim ppvInAuthBuffer As Long
    #End If
    
    
    Dim ret&, b() As Byte, InAuthBuffer() As Byte
    Dim s1$, s2$
    pUiInfo.cbSize = LenB(pUiInfo)
    pUiInfo.hwndParent = 0
    
    s1 = "Необходимо ввести учетные данные"
    s2 = "Подключение"
    pUiInfo.pszMessageText = StrPtr(s1)
    pUiInfo.pszCaptionText = StrPtr(s2)
    
    ret = CredPackAuthenticationBuffer(4, sUserName, vbNullString, Empty, pulInAuthBufferSize)
    ReDim InAuthBuffer(pulInAuthBufferSize)
    ret = CredPackAuthenticationBuffer(4, sUserName, vbNullString, InAuthBuffer(0), pulInAuthBufferSize)
    ret =  CredUIPromptForWindowsCredentials(pUiInfo, Empty, Empty, InAuthBuffer(0), pulInAuthBufferSize, ppvOutAuthBuffer, pulOutAuthBufferSize, Empty, &H20 Or &H200)
    
    If ret = 0 Then
        'CredUnPackAuthenticationBuffer
    End If
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2022, 09:46
Ответы с готовыми решениями:

Своя форма ввода логина и пароля
Добрый день всем читающим, нужна помощь в создании своей формы ввода логина и пароля для...

Форма для ввода пароля и логина
Здравствуйте, у меня возникла потребность в создании (в html), формы для ввода пароля и логина и...

Форма для ввода логина и пароля
Здравствуйте. Логин форм появляется она так, из главной формы (запускается как бы первой в...

Форма ввода логина и пароля (BCB6)
помогите плиз!! надо сделать форму на логин и пароль в builder 6! ну штоби в едити ввадить их!...

1
ᴁ®
Эксперт MS Access
3650 / 2006 / 427
Регистрация: 13.12.2016
Сообщений: 6,900
Записей в блоге: 5
17.07.2022, 11:30 2
Цитата Сообщение от krosav4ig Посмотреть сообщение
что не так, что забыл
может быть то, что в подпрограммы, точно также как и в функции можно передавать параметры и они могут иметь значения по умолчанию, а могут быть и не обязательными.
0
17.07.2022, 11:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.07.2022, 11:30
Помогаю со студенческими работами здесь

Форма для ввода логина и пароля
Здравствуйте, помогите разобраться! Программа такова: Администратор ведёт базу с инструкторами (в...

Форма авторизации (проверка на ошибку ввода логина или пароля)
можно ли из таким способом сделать проверку на ошибку ввода логина или пароля или для этого надо...

Нужно чтобы во View вылезала форма для ввода логина и пароля
Привет, помогите пожалуйста, нигде не могу найти информации. Нужно чтобы во вьюшке вылезала...

Форма для ввода логина и пароля для входа
Имеется форма для ввода логина и пароля для входа в административный раздел сайта, файл index.php....

Форма изменения пароля, убрать автоподстановку логина-пароля
У меня форма которая должна проверить старый пароль и изменить, классы инпутов названы...

Доработка ввода логина и пароля
procedure TForm2.Button1Click(Sender: TObject); var a,b:string ; begin a:='admin'; b:='123';...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru