Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Замена символов звездочками в InputBox при вводе пароля / 5 сообщений из 5, страница 1 из 1
01.07.2010, 07:14
    #36716927
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символов звездочками в InputBox при вводе пароля
Подскажите, пожалуйста.
Пользуюсь вот этим: Создание защищенного поля для ввода пароля
Но при использовании в моем коде выдает ошибку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
---------------------------
Microsoft Visual Basic
---------------------------
Compile error:

Invalid use of AddressOf operator
---------------------------
ОК   Справка   
---------------------------
Код могу показать:
Код: plaintext
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.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
'Используемые функции API.
Private Declare Function CallNextHookEx Lib "user32" _
(ByVal hHook As Long, ByVal ncode As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetModuleHandle Lib "kernel32" Alias _
"GetModuleHandleA" (ByVal lpModuleName As String) As Long
Private Declare Function SetWindowsHookEx Lib "user32" Alias _
"SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, _
ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
Private Declare Function SendDlgItemMessage Lib "user32" Alias _
"SendDlgItemMessageA" (ByVal hDlg As Long, _
ByVal nIDDlgItem As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetClassName Lib "user32" _
Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName _
As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetCurrentThreadId Lib "kernel32" () _
As Long
'Константы, используемые в функциях API.
Private Const EM_SETPASSWORDCHAR = &HCC
Private Const WH_CBT =  5 
Private Const HCBT_ACTIVATE =  5 
Private Const HC_ACTION =  0 
Private hHook As Long

Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Dim RetVal
    Dim strClassName As String, lngBuffer As Long
    If lngCode < HC_ACTION Then
        NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam)
        Exit Function
    End If
    strClassName = String$( 256 , " ")
    lngBuffer =  255 
    If lngCode = HCBT_ACTIVATE Then 'Окно активировано.
        RetVal = GetClassName(wParam, strClassName, lngBuffer)
        'Имя класса обычного текстового поля.
        If Left$(strClassName, RetVal) = "#32770" Then
            'Следующая строка превращает обычное текстовое поле в защищенное
            'поле ввода пароля. Символ "*" можно заменить на любой другой.
            SendDlgItemMessage wParam, &H1324, _
            EM_SETPASSWORDCHAR, Asc("*"), &H0
        End If
    End If
    'Следующая строка гарантирует корректный вызов
    'всех обработчиков прерываний.
    CallNextHookEx hHook, lngCode, wParam, lParam
End Function

Function InputBoxDK(Prompt, Optional Title, Optional Default, Optional XPos, Optional YPos, _
Optional HelpFile, Optional Context) As String
    Dim lngModHwnd As Long, lngThreadID As Long
    lngThreadID = GetCurrentThreadId
    lngModHwnd = GetModuleHandle(vbNullString)
    hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
    On Error Resume Next
    InputBoxDK = InputBox(Prompt, Title, Default, XPos, YPos, HelpFile, Context)
    UnhookWindowsHookEx hHook
End Function

Private Sub btnRasp_Click()
    Dim intRaspNumber As Integer
    
    If IsNumeric(tbRaspNumber) = True Then
        intRaspNumber = CInt(tbRaspNumber)
    Else
        MsgBox "Вы ввели неверный номер распоряжения"
        Exit Sub
    End If
    Dim strUserID As String, strPassword As String
    strUserID = InputBox("Введите логин для подключения к Way4", "Имя пользователя")
    strPassword = InputBoxDK("Введите пароль для подключения к Way4", "Пароль")
...
Рейтинг: 0 / 0
01.07.2010, 07:54
    #36716941
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символов звездочками в InputBox при вводе пароля
Katsy, извините, у меня опыт в прогамировании не большой, подскажите в этих строках скрипта

strUserID = InputBox("Введите логин для подключения к Way4", "Имя пользователя")
strPassword = InputBoxDK("Введите пароль для подключения к Way4", "Пароль")
почему во воторую строку ВБА заходи но ничего не делает, ни встречал ранее InputBoxDK, это что такое? Спасибо
...
Рейтинг: 0 / 0
01.07.2010, 07:57
    #36716942
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символов звездочками в InputBox при вводе пароля
Ципихович Эндрю,

Функция InputBoxDK не стандартная, она описана выше
...
Рейтинг: 0 / 0
01.07.2010, 09:11
    #36716984
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символов звездочками в InputBox при вводе пароля
KatsyПодскажите, пожалуйста.
Пользуюсь вот этим: Создание защищенного поля для ввода пароля
Но при использовании в моем коде выдает ошибку:

Потому, что вы разместили код в модуле формы, а надо в модуле.
...
Рейтинг: 0 / 0
01.07.2010, 09:16
    #36716995
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символов звездочками в InputBox при вводе пароля
Shocker.Pro,

спасибо, модуля у меня не было
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Замена символов звездочками в InputBox при вводе пароля / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]