Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Несколько вопросов Добавлено: 16.06.02 04:49  

Автор вопроса:  frog

Заранее спасибо за помощь

Вопрос первый

Как записать в реестр в параметр типа Reg_Binary массив байтов?

Вопрос второй

Имеется форма с кнопками, которая должна обрабатывать нажатия любых клавиш. Функциональные клавиши не распознаются даже с KeyPreview

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 XobbuT



ICQ: 177633964 

Вопросов: 5
Ответов: 42
 Профиль | | #1 Добавлено: 16.06.02 15:19

Лови, может, чем поможет...

Constant         Value        ;Description
Постоянные Значение Описание

vbKeyF1         0x70          F1 key.
vbKeyF2         0x71          F2 key.
vbKeyF3         0x72          F3 key.
vbKeyF4         0x73          F4 key.
vbKeyF5         0x74          F5 key.
vbKeyF6         0x75          F6 key.
vbKeyF7         0x76          F7 key.
vbKeyF8         0x77          F8 key.
vbKeyF9         0x78         F9 key.
vbKeyF10       0x79         F10 key.
vbKeyF11       0x7A        F11 key.
vbKeyF12       0x7B        F12 key.
vbKeyF13       0x7C        F13 key.
vbKeyF14       0x7D        F14 key.
vbKeyF15       0x7E         F15 key.
vbKeyF16       0x7F         F16 key.

Кстати, нажатия функциональных клавиш обрабатывает форма, а не элемент управления.

Попробуй так:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyF4 Then

     MsgBox “Нажата F4”

 ElseIf KeyCode = vbKeyF4 And Shift = vbShiftMask Then

      MsgBox “Нажаты F4 + Shift”

End If

End Sub

Ответить

Номер ответа: 2
Автор ответа:
 frog



Вопросов: 4
Ответов: 4
 Профиль | | #2 Добавлено: 17.06.02 08:21

...Гмм... Я, скорее всего, просто не знаю терминологии... Под функциональными клавишами я подразумевал LeftArrow, DownArrow, RightArrow, UpArrow, и еще несколько, нажатия которых в форме с какими-либо элементами управления никак не хотят обрабатываться, а именно: Home, End, Page Up, Page Down, Print Screen... Может быть, вы мне с этим поможете...

Еще раз спасибо.

Ответить

Номер ответа: 3
Автор ответа:
 SAVok



ICQ: 155153916 

Вопросов: 2
Ответов: 126
 Профиль | | #3 Добавлено: 17.06.02 09:21

зн. vbKeyLeft,vbKeyRight... вообще просто посмотри содержимое класса KeyCodeConstants!!!(если не в курсе как, то: 1. в проекте нажми F2 2. В списке Classes найди KeyCodeConstants)

Ответить

Номер ответа: 4
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #4
Добавлено: 17.06.02 11:45

Не знаю поможет ли.

В GW-BASIC перед кодом клавиши нужно было добавлять 0.

Например CHR("0")+CHR("76")

Ответить

Номер ответа: 5
Автор ответа:
 XobbuT



ICQ: 177633964 

Вопросов: 5
Ответов: 42
 Профиль | | #5 Добавлено: 18.06.02 00:10

Лови, может, это поможет

Constant        Value        Description
Постоянные Значение Описание

VbKeyLButton  0x1       Left mouse button.
VbKeyRButton  0x2       Right mouse button.
VbKeyCancel    0x3       CANCEL key.
VbKeyMButton 0x4       Middle mouse button.
VbKeyBack      0x8       BACKSPACE key.
VbKeyTab        0x9       TAB key.
VbKeyClear      0xC       CLEAR key.
VbKeyReturn    0xD       ENTER key.
VbKeyShift       0x10       SHIFT key.
VbKeyControl  0x11       CTRL key.
VbKeyMenu     0x12       MENU key.
VbKeyPause     0x13       PAUSE key.
VbKeyCapital   0x14       CAPS LOCK key.
VbKeyEscape   0x1B       ESC key.
VbKeySpace    0x20       SPACEBAR key.

VbKeyPageUp  0x21       PAGE UP key.
VbKeyPageDown 0x22   PAGE DOWN key.
VbKeyEnd           0x23    END key.
VbKeyHome        0x24    HOME key.
VbKeyLeft           0x25    LEFT ARROW key.
VbKey Up           0x26    UP ARROW key.
VbKeyRight         0x27    RIGHT ARROW key.
VbKeyDown       0x28    ;DOWN ARROW key.
VbKeySelect       0x29     SELECT key.
VbKeyPrint         0x2A    PRINT SCREEN key.
VbKeyExecute     0x2B    EXECUTE key.
VbKeySnapshot   0x2C    SNAPSHOT key.
VbKeyInsert        0x2D    INS key.
VbKeyDelete       0x2E    ;DEL key.
VbKeyHelp         0x2F    HELP key.

VbKeyNumlock   0x90    NUM LOCK key.

-------------------

Кстати, тебе надо, чтобы с какой-то удерживаемой кнопой на клавиатуре нажималась еще кнопа на форме и все происходило?

Если так, то посмотри на код, который я тебе давал, может, он чем поможет...

И помни: нажатия функциональных клавиш обрабатывает форма, а НЕ элемент управления.

Ответить

Номер ответа: 6
Автор ответа:
 XobbuT



ICQ: 177633964 

Вопросов: 5
Ответов: 42
 Профиль | | #6 Добавлено: 18.06.02 00:20

Если решишь заманьячить ASCII - лови коды дополнительных символов

Code|Character

32    [space]
33     !
34     "
35     #
36     $
37     %
38     &
39     '
40     (
41     )
42     *
43     +
44      ,
45    -
46    .
47    /
48    0
49    1
50    2
51    3
52    4
53    5
54    6
55    7
56    8
57    9
58    :
59    ;
60    <
61    =
62    >
63    ?
64    @
91    [
92    \
93    ]
94    ^
95    _
96    `
123    {
124    |
125    }
126    ~

Ответить

Номер ответа: 7
Автор ответа:
 frog



Вопросов: 4
Ответов: 4
 Профиль | | #7 Добавлено: 18.06.02 04:05

Я не совсем это имел в виду... Просто создайте пустую форму с кодом:

Private Sub Form_KeyDown(keycode,shift)

form.keypreview=true

msgbox keycode

end sub

А теперь зараньте ее и нажмите какую-нибудь стрелку. Все работает, так? А теперь разместите на форме какой-нибудь элемент управления. Снова зараньте и нажмите стрелку... Вот что я имел в виду. Можно ли это как-нибудь исправить?

Ответить

Номер ответа: 8
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #8
Добавлено: 18.06.02 10:40

Попробуй GetKeyState.

Но она требует таймер.

 

Есть другой вариант - быстрее, но неудобнее.

Создай процедуру

Sub Keys(KeyCode as Integer)

msgbox KeyCode

end sub

А затем напиши во всех объектах в процедурах KeyPress (где есть):

Call Keys (KeyCode)

Ответить

Номер ответа: 9
Автор ответа:
 XobbuT



ICQ: 177633964 

Вопросов: 5
Ответов: 42
 Профиль | | #9 Добавлено: 18.06.02 22:55

Кстати, ты вообще в реестр писать умеешь?

Если нет, то лови мысль :о)

Если юзаешь стандартные ВБшные фичи, то у тебя все пишется в ключ [HKCU\SOFTWARE\VB and VBA Program Settings].

Для того, чтобы писать в любой ключ, надо юзать АПИ.

Вот :о)

Ответить

Номер ответа: 10
Автор ответа:
 frog



Вопросов: 4
Ответов: 4
 Профиль | | #10 Добавлено: 22.06.02 02:37

К сожалению, сколько бы я не искал, ответа на вопрос о том, как записать в реестр в параметр Reg_Binary, я так и не нашел. Надо внести какие-либо изменения в следующую процедуру, а какие, не знаю:

Sub SetValue(Root As Long, key As String, Field As String, Value As Variant)
Dim lResult As Long
Dim keyhandle As Long
Dim s As String
Dim l As Long
    lResult = RegOpenKeyEx(Root, key, 0, KEY_ALL_ACCESS, keyhandle)
    If lResult <> ERROR_SUCCESS Then
        Exit Sub
    End If
    Select Case VarType(Value)
        Case vbInteger, vbLong
            l = CLng(Value)
            lResult = RegSetValueEx_DWord(keyhandle, Field, 0, REG_DWORD, l, 4)
        Case vbString
            s = CStr(Value)
            lResult = RegSetValueEx_String(keyhandle, Field, 0, REG_SZ, s, Len(s) + 1)    ' +1 for trailing 00
    End Select
    RegCloseKey keyhandle
End Sub

Я ничегошеньки не понимаю из того, что здесь написано, но она работает соответственно, только для Строковых и Dword параметров. Может, кто-нибудь поможет? А то, боюсь, придется создавать временный inf-файл, ранить его из-под проги, а потом удалять...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам