【问题标题】:Capture Keystrokes on Symbian OS?在 Symbian OS 上捕获击键?
【发布时间】:2008-10-28 14:19:39
【问题描述】:
【问题讨论】:
标签:
symbian
nokia
microsoft-dynamics
keystroke
【解决方案1】:
实际上,您可以在 Symbian OS 中捕获用于任何应用程序的击键。
RWindowGroup::CaptureKey() 和 RWindowGroup::CaptureLongKey() 允许您的可执行文件从任何应用程序中捕获密钥,无论您的应用程序是否在前台。
但是,在这种情况下,这可能会变得乏味 - 这两个功能通过捕获特定的键代码和修饰符组合来工作,因此您必须设置大量捕获来处理 SMS 编写器中的所有键组合。
您还必须在可执行文件捕获事件后将事件传递给 SMS 编写器。虽然名义上可以使用 RWsSession::SendEventToWindowGroup() 或 TApaTask::SendKey(),但涉及事件以正确的顺序(即按下键、键事件、按下键)以及不同 FEP(前端处理器)的行为以供用户输入的复杂性。
因此,尽管按照上述方式执行您的要求在名义上是可行的,但实施和测试将被证明是乏味的,接近于风险。如果您只想分析写作风格以收集数据(而不是在产品应用程序中),您最好编写自己的 SMS 编写器 - 诺基亚论坛网站上有很多关于编辑器和 SMS 发送的示例。
【解决方案2】:
在相关说明中,当我在 Symbian 手机上对其 API 感到沮丧时,是否有一个 API 可以检测所有被按下的键? ;-)
【解决方案3】:
嗯,有几个级别可以回答您的问题。
击键实际上是由消息编辑器应用程序捕获的。因此,它要么提供一个 API 来为您提供所有击键(您可以在 http://forum.nokia.com 上查找一个。您会找到消息编辑器 API,但它主要是关于重用 GUI 控件而不是您正在寻找的内容for) 或者您需要自己的透明应用程序,该应用程序位于前台并捕获击键,然后再将它们反馈给恰好在后面的任何应用程序。幸运的是(出于明显的安全原因),Symbian OS 不允许您这样做。
但是,当消息保存在手机内存中时,您可以让自己的应用程序读取消息:当它们保存在草稿文件夹或 SMS 发件箱中时。
强制无耻插件:建议阅读http://www.quickrecipesonsymbianos.com的消息章节,以了解如何使用Symbian Message Store
您感兴趣的类别是:CmsvEntry、CMsvSession、MMsvSessionObserver、CMsvOperation 和 CSmsClientMtm。