可以使用以下方法使得程序在后台的时候仍然很接受键盘输入
//53是按键5的iScanCode,另外一些按键例如向左键要使用iCode来捕捉,方法相同
//in AppUi::ConstructL()
iEikonEnv->RootWin().CaptureKey(53,0,0 );
iEikonEnv->RootWin().CaptureLongKey(53,53, 0, 0,1000000000, ELongCaptureNormal); // to start capturing
//in AppUi::HandleKeyEventL()
if(aKeyEvent.iScanCode == 53 && aKeyEvent.iRepeats == 1)
{
//相关处理
}
这里要注意的是53是要接收的按键的iScanCode,如果这样做发现没有接收到按键事件,应该将CaptureLongKey()的第五个参数设置大点,因为这个参数的意义是如果有多个程序监听了同一个按键,系统将会把该按键传递给较大值那个程序.同时是因为这个原因,如果有程序监听了5再回到界面拨号打电话的话,按5键无反应.这个问题将在另外解决.