Фиксировать нажатия клавиш на Symbian OS?
-
04-07-2019 - |
Вопрос
Как можно было бы записывать нажатия клавиш пользователями в программе SMS composer на ОС Symbian, в частности, для Nokia N73 (или любого из устройств, поддерживаемых symbian http://en.wikipedia.org/wiki/Symbian_OS#Devices_that_have_used_the_Symbian_OS)?Я новичок в разработке symbian и пытаюсь написать приложение для анализа стилей написания тех, кто отправляет SMS.Любая информация (или толчок в правильном направлении) была бы замечательной.
Большое спасибо,
A
Решение
На самом деле, вы можете записывать нажатия клавиш, предназначенные для любого приложения в Symbian OS.RWindowGroup::CaptureKey()
и RWindowGroup::CaptureLongKey()
разрешите вашему исполняемому файлу захватывать ключи из любого приложения, независимо от того, находится ли ваше на переднем плане или нет.Однако в данном случае это может оказаться утомительным - эти две функции работают путем захвата определенных кодов клавиш и комбинаций модификаторов, поэтому вам пришлось бы настроить множество захватов, чтобы иметь дело со всеми комбинациями клавиш в SMS composer.
Вам также пришлось бы передать событие составителю SMS-сообщений, как только ваш исполняемый файл захватил его.Хотя номинально возможно использование RWsSession::SendEventToWindowGroup()
или TApaTask::SendKey()
, существуют сложности , связанные с тем , что события происходят в правильном порядке (т.е.нажатие клавиши вниз, ключевое событие, нажатие клавиши вверх) и поведение различных FEP (интерфейсных процессоров) для пользовательского ввода.
Таким образом, хотя номинально возможно сделать то, что вам требуется, как указано выше, внедрение и тестирование оказалось бы утомительным, граничащим с риском.Если все, что вы хотите сделать, это проанализировать стиль написания для сбора данных (а не в приложении продукта), возможно, вам лучше написать свой собственный SMS composer - на веб-сайте форума Nokia есть множество примеров редакторов и отправки SMS.
Другие советы
В связи с этим - существует ли API, который может обнаруживать одновременное нажатие всех клавиш, когда я нажимаю на свой телефон Symbian, разочарованный его API?;-)
Что ж, есть несколько уровней ответа на ваш вопрос.
Нажатия клавиш фактически фиксируются приложением message editor (редактор сообщений).Таким образом, либо он предоставляет API для передачи вам всех своих нажатий клавиш (вы можете поискать его на http://forum.nokia.com.Вы найдете API редактора сообщений, но в основном это будет связано с повторным использованием элементов управления GUI, а не с тем, что вы ищете), или вам понадобится собственное прозрачное приложение, которое остается на переднем плане и фиксирует нажатия клавиш, прежде чем отправлять их обратно в любое приложение, которое оказывается сразу за ними.К счастью (по очевидным соображениям безопасности), Symbian OS не позволит вам сделать это позже.
Однако вы можете настроить свое собственное приложение на чтение сообщений, когда они сохраняются в памяти телефона:когда они будут сохранены в папке Черновиков или в почтовом ящике исходящих SMS.
Обязательная бесстыдная вилка:Я бы посоветовал прочитать главу об обмене сообщениями в http://www.quickrecipesonsymbianos.com для того, чтобы понять, как пользоваться магазином сообщений Symbian
Классами , представляющими интерес в вашем случае , являются :CmsvEntry, CMsvSession, MMsvSessionObserver, CMsvOperation и CSmsClientMtm.