Вопрос № 23572: Здравствуйте.
Вопросы по Microsoft Visual Basic 6.0.
1.Как сделать чтоб программа выполняла команды по нажатию клавиш даже когда она работает в скрытом режиме (hide). Если окно программы открыто и использовать оператор KeyCode = (33, 39 и тд...
Вопрос № 23.572
Здравствуйте.
Вопросы по Microsoft Visual Basic 6.0.
1.Как сделать чтоб программа выполняла команды по нажатию клавиш даже когда она работает в скрытом режиме (hide). Если окно программы открыто и использовать оператор KeyCode = (33, 39 и тд), то программа выполняет все команды которые в ней запрограммированы, а в скрытом режиме программа не реагирует на нажатие клавиш.
2.Почему программа работает при использований одной клавиши на одну функцию, а при использований 2 клавиш на одну функцию программа не работает, и как это исправить? Смотри пример
Пример:
If KeyCode = 18 Then END (так работает) 18 - ALT
If KeyCode = 18 + 36 Then END (так не работает) 36 - Home
3. При использований клавиш для выполнения команд если в окне нет кнопок, то работает идеально, но если добавить кнопку (например “Выход”) то нажатия клавиш игнорируются.
Отправлен: 15.07.2005, 23:13
Вопрос задал: Дмитрий Хаймин (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: _Виталий
Здравствуйте, Дмитрий Хаймин!
1. Почитай здесь:
http://www.sources.ru/vb/system/creating_hotkey_for_application.shtml
2. Потому, что надо делать так:
If KeyCode = 18 or KeyCode = 36 Then END
иначе 18+36=54; идет такая проверка KeyCode = 54
3.Потому, что при добавлении кнопки на форму и нажатии клавиш уже обрабатывается не Form_KeyDown, а Command1_KeyDown.
Что бы всё работало как ты хочешь установи Form1.KeyPreview = True.
Ответ отправил: _Виталий (статус: 4-ый класс)
Отправлен: 16.07.2005, 01:06
Отвечает: Залетин Виталий Викторович
Здравствуйте, Дмитрий Хаймин!
1. Используйте таймер (он работает даже когда основное окно программы не активно, т. е. свернуто и Вы занимаетесь чем-то другим. При этом в его событии Timer используйте АПИ функцию GetAsyncKeyState(код клавиши), которая вернет Истину, если нажата эта клавиша) либо чистое АПИ (DefWindowProc).
2. 18+36 дает 54 - Ваша прога ждет нажатия клавиши именно с таким кодом.
Если Вы хотите,чтобы программа реагировала и на 18 и на 36, то пишите эту строку так:
If Keycode=18 OR Keycode=36 Then
...
End if
Или так:
If Keycode=vbKeyAlt Or KeyCode=vbKeyHome Then
...
End if
3. У формы есть свойство KeyPreview - установите его в True и все заарботает.
--------- Учиться никогда не поздно. Особенно программированию!