如何实现2个MFC进程之间的即时通讯?
最近在写一个监控小程序出现了一个问题,假设监控程序为Monitor.exe,被监控程序为Client.exe,监控的作用是可以强行关闭和打开Client.exe,并且还能定时从后台下载更新文件来覆盖Client.exe.但是更新那块,我想做出这样的模式:
Monitor.exe里面用一个定时器,定期检查下载文件夹内是否有新的Client.exe,如果有,先向Client.exe发送消息请求状态,看Client.exe是否正在有用户使用,如果有,就继续等待,如果没有,就立刻关闭Client.exe,然后用MoveFileEx函数将下载文件夹里的新Client.exe覆盖过来并删除源文件.
但是如何向Client.exe发送消息后再得到Client.exe的使用状态,这块我就发愁了,Monitor.exe向Client.exe发送自定义的消息后(使用的是SendMessage函数),如果有人在使用,Client.exe该如何将有人使用这个状态反馈给Monitor.exe,Monitor又如何得知它所收到的消息一定是上一次发送消息的返回呢?
说的简单的点,一个进程A给进程B发送消息SendMessage后,如何准确而又迅速的收到B给他返回的信息提示,比如返回字符串"有人使用","无人使用"....
[解决办法]
socket通信...
[解决办法]
可这样 你发的时候标记自己的信息格式:1:内容;2:标示符号(例如"REQUEST"表示请求,“REPLY"表示回应");3:请求序列号或者回应序列号(该序列用于标示服务器或者客户当前响应的事件序号)
[解决办法]
1 使用hook挂载DLL,就可以向monitor发消息
2 如何控制消息准确性? 7#说的就可以,难的就是要维护序列号
[解决办法]
你可以向client发送一个消息 ,client收到该消息后弹出一个对话框,询问用户是否更新,如果用户点击是,则client向monitor发送我要更新的消息,接着更新client,如果用户点击否,则向monitor发送不需要更新,然后再过一段时间再询问client是否更新