使用全局CEvent在不同进程间通信

来源:互联网 发布:淘宝模特兼职公司 编辑:程序博客网 时间:2024/04/28 00:22

创建两个基于MFC的控制台应用程序;

假设一个exe叫【事件1】,另一个exe叫【事件2】;【事件1】中按空格键向【事件2】发消息,【事件2】响应并显示!

 

【事件1】关键程序:

//// 创建一个共享的全局事件//第二个参数为设置信号后,自动复位为无信号//第三个参数为共享全局用的名字//CEvent *m_pEvt = new CEvent(FALSE, FALSE, "12345");if (m_pEvt == NULL){printf("创建事件失败\n");return 0;}printf("按下空格键,向另一个创建exe发送事件通知\n");//// 按空格键向另一个进程发送事件//while(1){if (kbhit()){char ch = getch();if (ch == 'q')break;if (ch == ' '){static int k = 0;printf("发送事件: %d\n", k++);m_pEvt->SetEvent();}}Sleep(5);}


 

【事件2】关键程序(启动和主循环中):

//// 创建一个共享的全局事件//第二个参数为设置信号后,自动复位为无信号//第三个参数为共享全局用的名字//CEvent *m_pEvt = new CEvent(FALSE, FALSE, "12345");if (m_pEvt == NULL){printf("创建事件失败\n");return 0;}//// 创建线程等待接收//AfxBeginThread(MyControllingFunction, m_pEvt);printf("等待另一个创建exe发送的事件通知\n");//// 主循环等待退出//while(1){Sleep(5);}

 

线程函数中:

UINT MyControllingFunction( LPVOID pParam ){CEvent *pEvt = (CEvent *)pParam;while(1){//使用 CSyncObject::operator HANDLE 转型WaitForSingleObject((HANDLE)(*pEvt), INFINITE);static int k = 0;printf("收到事件: %d\n", k++);}}



 

 

 

 

 

 

原创粉丝点击