Symbian进程间通信
Symbian进程间通信
通常我们都会用到CS结构来处理一些项目,这样不可避免的就会用上进程通信了.
SYMBIAN平台UI进程之间的通讯已经有很多现成代码了.如果后台EXE进程通信如何
是好.下面介绍一种通信方式.无论后台进程还是UI都可以使用的完美解决方案.
让我们来看代码:
1.Server
void CP2PServer::ConstructL()
{
//创建
iMsgQueue.CreateGlobal(KGLobalName, KNumberOfSlots, KMessageLength, EOwnerProcess);
CActiveScheduler::Add( this); // Add to scheduler
iMsgQueue.NotifyDataAvailable( iStatus );//开始监听消息
SetActive(); // Tell scheduler a request is active
}
void CP2PServer::RunL()
{
if (iStatus.Int() == KErrNone)
{
//接收数据
TRAPD(error,iMsgQueue.Receive( &str_SendData, KMessageLength));
if(error==KErrNone)
{
iObserver->HandleMessageReceiveL(str_SendData.DataBuf.Left
(str_SendData.DataLength));
}
}
}
2.Client
void CP2PClient::ConstructL()
{
//创建
iMsgQueue.OpenGlobal(KGLobalName, EOwnerProcess);
}
//发送消息
void CP2PClient::SendMessageL(const TDesC8& aSendMessage)
{
STR_SENDDATA temp;
temp.DataLength = aSendMessage.Length();
temp.DataBuf.Copy(aSendMessage);
iMsgQueue.Send(&temp, KMessageLength);
}
以上代码己在N73/E71/N95/5800/N70上测试通过了.
通常我们都会用到CS结构来处理一些项目,这样不可避免的就会用上进程通信了.
SYMBIAN平台UI进程之间的通讯已经有很多现成代码了.如果后台EXE进程通信如何
是好.下面介绍一种通信方式.无论后台进程还是UI都可以使用的完美解决方案.
让我们来看代码:
1.Server
void CP2PServer::ConstructL()
void CP2PServer::RunL()
(str_SendData.DataLength));
2.Client
void CP2PClient::ConstructL()
void CP2PClient::SendMessageL(const TDesC8& aSendMessage)
以上代码己在N73/E71/N95/5800/N70上测试通过了.