在Symbian OS上捕获击键?

时间:2008-10-28 14:19:39

标签: symbian nokia microsoft-dynamics keystroke

如何在Symbian OS上的SMS编辑器中捕获用户击键,特别是对于诺基亚N73(或任何支持Symbian的设备http://en.wikipedia.org/wiki/Symbian_OS#Devices_that_have_used_the_Symbian_OS)?我是symbian开发的新手,我正在尝试编写一个应用程序来分析发送短信的人的写作风格。任何信息(或推向正确的方向)都会很棒。

非常感谢,

A

3 个答案:

答案 0 :(得分:2)

实际上,您可以捕获发往Symbian OS中任何应用程序的击键。 RWindowGroup::CaptureKey()RWindowGroup::CaptureLongKey()允许您的可执行文件从任何应用程序中捕获密钥,无论您是否在前台。 但是,在这种情况下,这可能会很繁琐 - 这两个函数通过捕获特定的键代码和修改器组合来工作,因此您必须设置大量捕获来处理SMS编写器中的所有键组合。

一旦你的exectuable捕获了它,你还必须将事件传递给SMS作曲家。虽然名义上可能使用RWsSession::SendEventToWindowGroup()TApaTask::SendKey(),但是事件以正确的顺序(即按键,按键事件,按键向上)以及用户输入的不同FEP​​(前端处理器)的行为涉及复杂性

因此,尽管按照上述要求做出名义上可行的做法,但实施和测试将证明是单调乏味的。如果你想要做的只是分析写作风格来收集数据(而不是在产品应用程序中),你可能最好还是编写自己的短信作曲家 - 诺基亚论坛网站上有很多关于编辑和短信发送的例子。

答案 1 :(得分:1)

嗯,有几个级别可以回答你的问题。

  • 按键实际上是由消息编辑器应用程序捕获的。所以,它提供了一个API来为你提供所有键击(你可以在http://forum.nokia.com上查找一个。你会找到消息编辑器API,但它主要是关于重用GUI控件而不是你的'重新寻找)或者你需要一个自己的透明应用程序,它保留在前台并捕获击键,然后再将它们送回到恰好落后的应用程序。幸运的是(出于明显的安全原因),Symbian OS将不允许您稍后执行此操作。

  • 但是,当您将应用程序保存在手机记忆库中时,您可以将自己的应用程序读取消息:当它们保存在草稿文件夹或SMS发件箱中时。

强制性的无耻插件:我建议阅读http://www.quickrecipesonsymbianos.com的消息传递章节,以了解如何使用Symbian消息存储

您的案例中感兴趣的类别是:CmsvEntry,CMsvSession,MMsvSessionObserver,CMsvOperation和CSmsClientMtm。

答案 2 :(得分:1)

在一个相关的说明中 - 是否有一个API可以检测到所有按键被一次按下,因为我在我的Symbian手机上对其API感到沮丧? ; - )