Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  13:58[Войти] | [Зарегистрироваться]
Ответ на вопрос № 48066

02-01-2007 04:25
Доброго времени суток!
С переходом на новую Windows Vista перестали работать многие драйвера. Это и случилось с моей мультимедийной клавиатурой (Defender KM2080 'Luna'). От разработчиков ждать драйвер уже, как я понял, не имеет смысла. Решил написать сам.

undefined
Собственно вопрос:
На клавиатуре есть клавиши для веб браузеров (назад, вперед, запустить браузер, остановить загрузку страницы, е-мыло, избранное, поиск, обновить). Как мне реализовать их функциональность (с системными HotKey я уже разобрался). Будут ли эти клавиши работать для разных браузеров?
И второй вопрос: в каком виде лучше писать это подобие драйвера. Как сервис или как обычное приложение со спрятанной формой или как еще ?
Заранее спасибо.

[+] Добавить в избранные вопросы

Отслеживать ответы на этот вопрос по RSS

Ответы:


Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

11-01-2007 09:39 | Сообщение от автора вопроса
Думаю вам нужно разобраться чем отличается VirtualKey от ScanCode
Понял свою глупую ошибку. Исправлюсь.
придётся стаить клавиатурный хук.
Начет этого хука. Из информации в нете я понял, что все это будет состоять из Dll`ки и Exe`шника. Но вот толко сложно там все написано, а толковых примеров почему-то не нашел. Не могли бы подсказать что к чему (желательно с примерчиком, конечно).

08-01-2007 07:39
Думаю вам нужно разобраться чем отличается VirtualKey от ScanCode, тогда станет понятно, что с помощью RegisterHotKey отследить ваши клавиши не получится, придётся стаить клавиатурный хук.

08-01-2007 01:05 | Сообщение от автора вопроса
Ловлю нажатие таким способом:
...

private
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
...
const
  scroll = 255;


// REG Hot Key
procedure reg(HK: integer);
begin
RegisterHotKey(Form1.Handle, HK, 0, HK);
end;

// UNREG Hot Key
procedure unreg(HK: integer);
begin
UnRegisterHotKey(Form1.Handle, HK);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
// Registering HotKeys
reg(scroll);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
unreg(scroll);
end;

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
  if MSG.HotKey = scroll then
    begin
      ShowMessage('ACTIVE!');
    end;


При замене константы scroll = 255 на scroll = $63 перестает работать.

06-01-2007 17:49
Ну сканкод у нее 255,
Что-то я сильно сомневаюсь что у неё такой ScanCode, должен быть (проверить не на чем) $63.
но как отловить именно отжатие?
А как вы ловите нажатие?

06-01-2007 10:52 | Сообщение от автора вопроса
Ну сканкод у нее 255, но как отловить именно отжатие?

05-01-2007 09:19
Теперь, наверное, последний вопрос: как отловить нажатие и отжатие этого Wake.
Видимо поставить клавиатурный хук.
И как он определяется в системе ( ну Shift = VK_SHIFT, Ctrl = VK_Control, а он как ?
Если не ошибаюсь у этой кнопки нет соответствующего VK, так что только по сканкоду.

05-01-2007 08:10 | Сообщение от автора вопроса
http://209.85.129.104/search?q=cache:jyYUuC7KunMJ:cvs.sourceforge.net/viewcvs.py/fma/floAtMixer/MouseCtrlCoClass.pas%3Frev%3D1.2+MOUSEEVENTF_WHEEL+SendInput
Спасибо! Полезный линк.
Теперь, наверное, последний вопрос: как отловить нажатие и отжатие этого Wake. И как он определяется в системе ( ну Shift = VK_SHIFT, Ctrl = VK_Control, а он как ?

05-01-2007 07:30
http://209.85.129.104/search?q=cache:jyYUuC7KunMJ:cvs.sourceforge.net/viewcvs.py/fma/floAtMixer/MouseCtrlCoClass.pas%3Frev%3D1.2+MOUSEEVENTF_WHEEL+SendInput

05-01-2007 04:22 | Сообщение от автора вопроса
нужно эмулировать движение колёсика через SendInput
А можно поподробнее или примерчик какой ?
Уже все почти сделал, вот только этот гадский скроллер остался.

04-01-2007 12:51
Мультимедиа клавиши работают, но кнопки (play, stop, next, previous) работают только в Windows Media Player, в Winamp`e не работают.
Ну так это проблемы Winamp-а, а не клавы/виндов, вот какие-то плагины по теме:
http://www.winamp.com/plugins/details.php?id=50356
http://www.winamp.com/plugins/details.php?id=79310
http://www.winamp.com/plugins/details.php?id=85103

вращение вперед = нажатию клавиши WAKE (на старых клавиатурах такая была), вращение назад = отжатию клавиши WAKE. Как быть ?
Ну раз вы уже умеете определять сам факт вращения, осталось задать чему он должен соответствовать, если вращению MouseWheel, то нужно эмулировать движение колёсика через SendInput.
Надо заметить что в Vista работа как с хуками так и с SendInput сильно ограничена и как минимум нужно составить для вашего "драйвера" правильный манифест и не исключаю, что лучше оформить его именно как сервис.

04-01-2007 06:44 | Сообщение от автора вопроса
Да, я действительно немного неправильно задал вопрос.
Мультимедиа клавиши работают, но кнопки (play, stop, next, previous) работают только в Windows Media Player, в Winamp`e не работают. Но для них я уже написал что-то вроде драйвера.
Навернулся на новую проблему:
На клаве есть дополнительный скроллер. Как заставить его работать ?
С помощью Passmark Keyboard Test я понял что он (скроллер) обрабатывается так: вращение вперед = нажатию клавиши WAKE (на старых клавиатурах такая была), вращение назад = отжатию клавиши WAKE. Как быть ?

02-01-2007 12:18
От разработчиков ждать драйвер уже, как я понял, не имеет смысла.
Ну сайт (http://www.defender.ru/support/drivers/keyboard/) вроде живой и обновления всего лишь месячной давности имеются, вы им напишите письмо в тех поддержку.

Не совсем понятно в чём собственно состоит вопрос, если клавиатура имеет "мультимедийные" клавиши, то винда всё отлично видит и без левых "драйверов", так как у каждой спец клавиши есть свой стандартный код:

VK_BROWSER_BACK A6 Windows 2000/XP: Браузер - страница назад
VK_BROWSER_FORWARD A7 Windows 2000/XP: Браузер - страница вперёд
VK_BROWSER_REFRESH A8 Windows 2000/XP: Браузер - обновить
VK_BROWSER_STOP A9 Windows 2000/XP: Браузер - стоп
VK_BROWSER_SEARCH AA Windows 2000/XP: Браузер - поиск
VK_BROWSER_FAVORITES AB Windows 2000/XP: Браузер - избранное
VK_BROWSER_HOME AC Windows 2000/XP: Браузер - старт и домой
VK_VOLUME_MUTE AD Windows 2000/XP: Громкость отключить
VK_VOLUME_DOWN AE Windows 2000/XP: Громкость понизить
VK_VOLUME_UP AF Windows 2000/XP: Громкость повысить
VK_MEDIA_NEXT_TRACK B0 Windows 2000/XP: WMP следующий трэк
VK_MEDIA_PREV_TRACK B1 Windows 2000/XP: WMP предыдущий трэк
VK_MEDIA_STOP B2 Windows 2000/XP: WMP стоп
VK_MEDIA_PLAY_PAUSE B3 Windows 2000/XP: WMP воспроизведение\пауза
VK_LAUNCH_MAIL B4 Windows 2000/XP: Запуск почты
VK_LAUNCH_MEDIA_SELECT B5 Windows 2000/XP: Кнопка медиа выбора (воспроизвести выбранный файл)
VK_LAUNCH_APP1 B6 Windows 2000/XP: Старт приложения 1
VK_LAUNCH_APP2 B7 Windows 2000/XP: Старт приложения 2


Если ваша клава как-то по другому передаёт эти кнопки, то надо выяснять как именно и возможно без написания драйвера (а не простого хука) тут не обойтись.
Будут ли эти клавиши работать для разных браузеров?
Нормальные программы (в том числе и популярные браузеры) работают на основе WM_APPCOMMAND, которое в данном случае придётся посылать самому.
Но мне всё таки не очень ясно почему клавиатура не работает без "драйверов", Vist-ы у меня нет, так что не проверить... Может поможет установка IntelliType от MS?
Например для сперцклавиш ноутбуков работает отдельное приложение в трее
Эти клавиши обычно сидят на отдельной шине и собственно к клавиатуре не относятся, просто битик на каком нибудь порту меняется и всё.

02-01-2007 10:07
Например для сперцклавиш ноутбуков работает отдельное приложение в трее, но по моему мнению можно реализовать без проблем и как сервис.

А вот будут ли они работать с разными браузерами - зависит от разработчика данной программы.

Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Жил-был у бабушки серенький КТО?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Тип сообщения:
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Страница избранных вопросов Круглого стола.
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования