在任务列表中隐藏程序所引起的有关问题:无法关闭

在任务列表中隐藏程序所引起的问题:无法关闭.
通过下面的代码在任务列表中隐藏程序:
Ui::ConstructL()
{
...
RWsSession& ws = iEikonEnv->WsSession();
TInt wgid = ws.GetFocusWindowGroup();
CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(ws, wgid);
TUid aCurAppUid = gn->AppUid();
TInt activeId = aCurAppUid.iUid;
CleanupStack::PopAndDestroy(gn);
}

Document::UpdateTaskNameL(CApaWindowGroupName* aWgName)
{
  aWgName->SetHidden(ETrue);
}

虽然起作用了,但是又引起新问题了,程序不能被强制关闭.

查找原因,关闭的时候,程序通过相应:

void AppUi::HandleCommandL( TInt aCommand )
{
case EEikCmdExit:
...
}

在任务栏隐藏后,就不相应HandleCommandL的EEikCmdExit命令了,从而不能正常关闭.

请问各位,怎么才能让程序能够相应EEikCmdExit命令,被正常关闭呢.

------解决方案--------------------

void AppUi::HandleCommandL( TInt aCommand ) 

case EEikCmdExit: 
... 

方法中trace一下,当你程序隐藏后,按下关闭健,能否调到该函数。若能,看一下这种情况下的
aCommand值是什么,然后总结一下,看看是否有规律可以调用Exit()退出程序~
------解决方案--------------------
执行AppUi::Exit();能退出吗?
------解决方案--------------------
你别的程序是如何来关闭它的
------解决方案--------------------
看你的描述,应该是能进
void AppUi::HandleCommandL( TInt aCommand ) 

case EEikCmdExit: 
... 
} 方法,
只是这时aCommand值不是EEikCmdExit罢了

是这样理解吗?这样就好办了!
调用Exit()退出就好~


------解决方案--------------------
C/C++ code
Document::UpdateTaskNameL(CApaWindowGroupName *aWgName)
    {
    CAknDocument::UpdateTaskNameL(aWgName);
    aWgName->SetHidden(ETrue);
    }

------解决方案--------------------
in HandlecommandL of view

default:
{
AppUi()->HandleCommandL( aCommand );
break;
}


------解决方案--------------------
没明白我的意思~

1. 你的情况是其他程序关闭你正在运行的程序,可以进入void AppUi::HandleCommandL( TInt aCommand )这个方法,只是不是EEikCmdExit事件? 还是这种情况下,根本就不能进入HandleCommandL方法?

2. 假如是第一种情况,那就在HandleCommandL内强制调用Exit()就行;
3. 假如是第二种情况,别的程序调用什么方式来终止你运行的程序的?能保证该方法确实会调用正在运行程序的HandleCommandL()方法吗?
4. 用RProcess来杀,应该可以杀掉吧
------解决方案--------------------
void XXXUi::HandleCommandL(TInt aCommand)
{
switch (aCommand)
{
case EHidden:
{//隐藏程序
ActivateLocalViewL(KViewId);
TApaTask task(iCoeEnv->WsSession());
task.SetWgId(iCoeEnv->RootWin().Identifier());
task.SendToBackground();
break;
}

case EEikCmdExit:
Exit();//退出程序
break;
....................
}
}
------解决方案--------------------
你的逻辑很奇怪啊,既然都隐藏了,用户怎么个关闭它法呢?长按Menu根本不出现在任务列表中!

值得注意的是:长按Menu然后按C键,会调用一次Appui::HandleCommand(),如果你在里面不响应退出,下一次按C键则不会继续调用HandleCommand了
------解决方案--------------------
试验了一下没出现你说的问题, 重装的时候可以正常关闭,可能是别的地方造成的

测试手机E61和N95