![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
ProgramerForever |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
Нужно, чтобы при нажатии на "~" вызывалась форма методом Show. Проблема в том, что на исходной форме очень-очень много элементов управления, и для каждого писать обработчик - неразумно и нерационально. Может есть способ??
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Если контрол может получать фокус и обрабатывать нажатия (пусть и дефолтной процедурой) - для каждого такого контрола придется писАть процедуру. Впрочем, все они могут тупо вызывать одну и ту же Sub. Плюс обработчик (уровня) формы. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
voltaren |
|
||||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 17.11.2007 Репутация: нет Всего: нет |
Есть метод это сделать средствами WinAPI и Timer
Поидее код можно получить с помощью Asc("~") только для тильды не работает а для букв работает, надо просто подобрать ![]() Есть конечно еще метод, через Хуки это сделать но он сложнее ![]() |
||||
|
|||||
ProgramerForever |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
Я понял, что последний вариант перехватывает клавиши отовсюду. А можно ли перехватывать с помощью API нажатия в активном окне?
А зачем эта строка?
Ещё: Я потестил код. Он срабатывает n раз в секунду. А как обрабатывать ОДНО, КАЖДОЕ нажатие? Как я догадываюсь, с помощью хуков? Тех самых, которые
Это сообщение отредактировал(а) ProgramerForever - 29.4.2008, 12:44 |
||||
|
|||||
Insect |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 7.4.2008 Где: Н.Н. Репутация: нет Всего: нет |
можно отфильтровывать ненужное опять таки с использованием API функции (GetActiveWindow вроде как называецца) |
|||
|
||||
voltaren |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 17.11.2007 Репутация: нет Всего: нет |
Insect прав с помощью функции GetActiveWindow проверять какое окно активное
![]() не понял что вы имели ввиду под этой фразой "А как обрабатывать ОДНО, КАЖДОЕ нажатие?" ? |
|||
|
||||
ProgramerForever |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
Типа кейлоггера (но мне не для этого
![]() |
|||
|
||||
Insect |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 7.4.2008 Где: Н.Н. Репутация: нет Всего: нет |
ProgramerForever, тагда фильтр по хэндлу
![]() |
|||
|
||||
ProgramerForever |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
Пробуй код, сразу поймёшь о чём я. мне надо не 100 раз в секунду, а один раз. |
|||
|
||||
voltaren |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 17.11.2007 Репутация: нет Всего: нет |
а в чем проблема таймера надо поставить так что бы раз в секунду работал! Или например добавить переменную типа Boolean когда клавиша нажимается первый раз она становиться True и больше не срабатывает даже если клавиша нажата когда клавишу отпускаешь то переменная сбрасывается в False
|
|||
|
||||
Insect |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 7.4.2008 Где: Н.Н. Репутация: нет Всего: нет |
ProgramerForever, ну других способов не знаю...
А чем тебя этот не устраивает? Боишься умыкнуть у винды лишний таймер? ![]() P.S. В BlitzBasic' е (специальный бейсик для быстрого написания игр) имеется такая функция как IfKeyHit(#код#)... Но использовать приложение, созданное на нём специально для твоей задачи, не выгодно- экзэшник минимум 800 Кб делает да и не факт что получиццо... |
|||
|
||||
ProgramerForever |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
||||
|
||||
JusTalionis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 576 Регистрация: 11.7.2006 Репутация: 6 Всего: 17 |
Я обычно отслеживал время: после того как частота автоповтора прекратилась - значит отпущена клавиша. Собственно, это время задаст в твоей проге предел: с какой макс скоростью юзеру позволено долбить по этой клавише.
|
|||
|
||||
ProgramerForever |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
Точно! Буду копать в этом направлении.
|
|||
|
||||
Rrader |
|
|||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 6 Всего: 191 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "VB6" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB6 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |