Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / API как заблокировать клавиатуру конролу... / 17 сообщений из 17, страница 1 из 1
09.09.2008, 09:22
    #35528921
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
Подскажите возможно-ли ср-вами апи заблокировать сообщения от клавиатуры для конкретного контрола?
...
Рейтинг: 0 / 0
09.09.2008, 10:32
    #35529064
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
> Автор: Grayscale
> Подскажите возможно-ли ср-вами апи заблокировать сообщения от клавиатуры для
> конкретного контрола?


Подмена оконной функции(сабклассинг) с игнорированием сообщений WM_CHAR

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.09.2008, 10:39
    #35529077
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
Можно поподробней..? незнаком с этим((
...
Рейтинг: 0 / 0
09.09.2008, 11:09
    #35529162
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
Пример
...
Рейтинг: 0 / 0
09.09.2008, 11:12
    #35529171
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
Спасибо! Посмотрю))))
...
Рейтинг: 0 / 0
09.09.2008, 11:19
    #35529191
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
Код: plaintext
Call Unhook
Call это какой-то специфический вызов или равнозначно
Код: plaintext
Unhook
?
...
Рейтинг: 0 / 0
09.09.2008, 11:36
    #35529245
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
> Автор: Grayscale
> Call UnhookCall это какой-то специфический вызов или равнозначно
>
> Unhook?


в данном случае равнозначно, просто для читабельности, в случае с параметрами, будут
передаватся по значению, даже если объявлена передача по ссылке.

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.09.2008, 11:47
    #35529291
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
Понял спасибо))) сейчас разбираюсь и вкручиваю в Access... Чувствую у меня будут к вам еще вопросы))))
...
Рейтинг: 0 / 0
09.09.2008, 12:28
    #35529436
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
Код: 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.
Option Compare Database
Option Explicit
Public Const GWL_WNDPROC = - 4 
Public Const WM_CHAR& = &H102

Global lpPrevWndProc As Long

Public Declare Function GetFocus Lib "user32" () As Long

Public Declare Function DefWindowProc Lib "user32" Alias _
   "DefWindowProcA" (ByVal HWND As Long, ByVal wMsg As Long, _
    ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias _
   "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
    ByVal HWND As Long, ByVal Msg As Long, _
    ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias _
   "SetWindowLongA" (ByVal HWND As Long, _
    ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public Sub Hook(HWND As Long)
    lpPrevWndProc = SetWindowLong(HWND, GWL_WNDPROC, AddressOf WindowProc)
End Sub

Public Sub UnHook(HWND As Long)
Dim TEMP As Long
    TEMP = SetWindowLong(HWND, GWL_WNDPROC, lpPrevWndProc)
End Sub

Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If uMsg = WM_CHAR Then
        WindowProc = DefWindowProc(hw, uMsg, wParam, lParam)
    Else
        WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
    End If



Private Sub Form_Load()
    Me.txtTemplDesc.SetFocus
    Hook GetFocus
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Me.txtTemplDesc.SetFocus
    UnHook GetFocus
End Sub
End Function

вот такой текст не работает... вроде бы все так?
...
Рейтинг: 0 / 0
09.09.2008, 12:29
    #35529440
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
end sub и end function при копировании так встали...
...
Рейтинг: 0 / 0
09.09.2008, 12:43
    #35529513
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
Игорь Горбоносв случае с параметрами, будут
передаватся по значению, даже если объявлена передача по ссылке.
Это какое-то недоразумение.
...
Рейтинг: 0 / 0
09.09.2008, 15:21
    #35529994
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
Владимир Саныч Игорь Горбоносв случае с параметрами, будут
передаватся по значению, даже если объявлена передача по ссылке.
Это какое-то недоразумение.А точнее ерунда. Call просто синтаксическая конструкция, к режиму передачи параметров отношения не имеющая.
...
Рейтинг: 0 / 0
09.09.2008, 15:26
    #35530010
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
а с апи у меня что не так?))))
...
Рейтинг: 0 / 0
09.09.2008, 15:33
    #35530032
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Form_Load()
    Me.txtTemplDesc.SetFocus
    Hook GetFocus
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Me.txtTemplDesc.SetFocus
    UnHook GetFocus
End Sub

попробуйте сначала hwnd определить. возможно еще фокус на контрол не установлен
...
Рейтинг: 0 / 0
09.09.2008, 15:47
    #35530068
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
Все так, только SetFocus лишнее и
Код: plaintext
1.
2.
Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If uMsg <> WM_CHAR Then WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End Function
...
Рейтинг: 0 / 0
09.09.2008, 15:58
    #35530108
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
> Автор: Antonariy
> Владимир Саныч
> Игорь Горбонос
> в случае с параметрами, будут
> передаватся по значению, даже если объявлена передача по ссылке.
>
> Это какое-то недоразумение.
> А точнее ерунда. Call просто синтаксическая конструкция, к режиму передачи
> параметров отношения не имеющая.

Согласен, погорячился ;)
Погорячился, потому, что на передачу параметров влияли скобки, т.е. вызовы
ИмяФункции/ИмяПроцедуры(Параметр) и ИмяФункции/ИмяПроцедуры(Параметр) были разными. Но
сейчас параметры в скобки заключить можно только подставив Call.
Топика в котором узнал это, не нашёл, но
здесь
написанно что и почему и к чему относится.

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.09.2008, 17:06
    #35530339
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API как заблокировать клавиатуру конролу...
> Автор: Игорь Горбонос
>
> вызовы ИмяФункции/ИмяПроцедуры(Параметр) и ИмяФункции/ИмяПроцедуры(Параметр) были
> разными.

Читать:
вызовы ИмяФункции/ИмяПроцедуры(Параметр) и ИмяФункции/ИмяПроцедуры Параметр

--
С уважением Горбонос Игорь Леонидович

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


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