我有两个进程,一个是以用户administrator服务模式启动的,一个是正常启动的。
我用事件通讯的时候,如果两个进程都是正常启动的没有问题,但是如果一个是服务模式启动,另外一个进程就收不到同步消息。
不知道怎么样才能让他们能够收到同步消息。??还有就是不同的用户登陆创建的进程如何同步?我的代码是这样的:
等待:
                           pTray->SetIcon( pTray->m_icon1 );
HANDLE hEvent=CreateEvent(NULL, TRUE, FALSE, UWS_ERROR_LOG_EVENT);
if( hEvent==NULL )
{
hEvent=CreateEvent(NULL, TRUE, FALSE, UWS_ERROR_LOG_EVENT);
}
else
{
if( WAIT_OBJECT_0==WaitForSingleObject(hEvent, INFINITE) )
{
pTray->EnableAlert();
ResetEvent(hEvent);
}
CloseHandle(hEvent);
}
通知:
                  HANDLE hEvent=CreateEvent(NULL, TRUE, FALSE, UWS_ERROR_LOG_EVENT);
if( hEvent!=NULL )
{
SetEvent(hEvent);
CloseHandle(hEvent);
return TRUE;
}
return FALSE;

解决方案 »

  1.   

    等待某个事件时,使用OpenEvent函数,不要用CreateEvent,因为CreateEvent创建的事件有权限限制的。OpenEvent用于打开服务进程创建的事件。
      

  2.   

    此hEvet非彼hEvent,用命名的事件对象
      

  3.   

    我用了OpenEvent返回的错误码是2,但是这个事件肯定创建了,因为我在非服务状态下启动就好用
      

  4.   

    算是一个状态的通讯了,问题解决了
    就是在事件的名字前加Global\\,看来还是msdn管用
      

  5.   

    我试了,不论是CreateEvent还是OpenEvent,加还是没加Global\\,都不行,错误码是5:拒绝访问.
    不只楼主怎么解决的?