Захватывать нажатия клавиш на Symbian OS? - PullRequest
2 голосов
/ 28 октября 2008

Как можно было бы захватывать нажатия клавиш пользователей в SMS-компоновщике на ОС Symbian, особенно для Nokia N73 (или любого из устройств, поддерживающих symbian) http://en.wikipedia.org/wiki/Symbian_OS#Devices_that_have_used_the_Symbian_OS)? Я новичок в разработке Symbian, и я Попытка написать приложение для анализа стилей письма тех, кто отправляет SMS. Любая информация (или подтолкнуть в правильном направлении) будет здорово.

Большое спасибо,

A

Ответы [ 3 ]

2 голосов
/ 13 ноября 2008

На самом деле, вы можете захватывать нажатия клавиш, предназначенные для любого приложения в ОС Symbian. RWindowGroup::CaptureKey() и RWindowGroup::CaptureLongKey() позволяют вашему исполняемому файлу захватывать ключи из любого приложения, независимо от того, находится ли оно на переднем плане или нет. Однако в этом случае это может оказаться утомительным - эти две функции работают путем захвата определенных кодов клавиш и комбинаций модификаторов, поэтому вам придется настроить множество перехватов для обработки всех комбинаций клавиш в SMS-компоновщике.

Вы также должны были бы передать событие композитору SMS, как только ваш возможный захват его захватил. Хотя номинально возможно использование RWsSession::SendEventToWindowGroup() или TApaTask::SendKey(), существуют сложности, связанные с тем, что события поступают в правильном порядке (то есть нажатие клавиши, событие нажатия клавиши) и поведение различных FEP (процессоров переднего плана) для ввода пользователем.

Так что, хотя номинально выполнимо выполнить то, что вам требуется, как указано выше, это окажется утомительным для внедрения и тестирования, граничащего с рискованным. Если все, что вам нужно, - это анализировать стиль письма для сбора данных (а не в приложении к продукту), вам лучше написать свой собственный SMS-композитор - на веб-сайте Forum Nokia есть множество примеров редакторов и отправки SMS-сообщений.

1 голос
/ 13 ноября 2008

В связанной заметке - есть ли API, который может обнаружить все нажатия клавиш одновременно, когда я печатаю на своем телефоне Symbian в отчаянии от его API? ; -)

1 голос
/ 29 октября 2008

Ну, есть несколько уровней, чтобы ответить на ваш вопрос.

  • Фактически, нажатия клавиш фиксируются приложением редактора сообщений. Таким образом, либо он предоставляет API для ввода всех нажатий клавиш (вы можете найти его на http://forum.nokia.com.. Вы найдете API редактора сообщений, но в основном речь идет о повторном использовании элементов управления графическим интерфейсом, а не о том, что вы ' ищите) или вам понадобится прозрачное собственное приложение, которое остается на переднем плане и фиксирует нажатия клавиш перед тем, как передать их обратно в любое приложение, которое окажется позади. К счастью (по очевидным причинам безопасности), Symbian OS не позволит вам сделать это позже.

  • Однако вы можете иметь собственное приложение для чтения сообщений, когда они сохраняются в памяти телефона: когда они сохраняются в папке «Черновики» или в папке «Исходящие SMS».

Обязательный бесстыдный плагин: я бы посоветовал прочитать главу о сообщениях http://www.quickrecipesonsymbianos.com, чтобы понять, как использовать хранилище сообщений Symbian

Интересующие вас классы: CmsvEntry, CMsvSession, MMsvSessionObserver, CMsvOperation и CSmsClientMtm.

...