看流星社区

 找回密码
 注册账号
查看: 2035|回复: 0

VC进程间通信之消息传递

[复制链接]

该用户从未签到

发表于 2013-6-10 20:21:59 | 显示全部楼层 |阅读模式
vpn客户端要实现web登陆,采用activeX是相对来说最便捷、可靠性最好的一种方式,缺点在于activeX只适用于IE浏览器。
那么vpn客户端要为ActiveX提供调用接口和接收相应的参数,一般常用的方式有两种:
  1、socket通讯
  2、可执行程序的运行参数

如果是socket通讯必须要vpn客户端作监听tcp端口接收处理消息,activeX发消息,实现相对来说比较复杂;
可执行程序的运行参数让activeX调用相对来说非常简单,但是执行可执行程序都是以新开一个系统进程方式执行,那么要实现通讯需要解决:1、vpn客户端在系统中只能有一个进程实例   2、在新进程收到消息后需要收到的消息发送给旧的进程,然后退出。

vc实现进程通讯的实例:
cpp source:

    const UINT WM_MYMESSAGE = WM_USER + 1;
    CWnd *pWnd=CWnd::FindWindow(NULL,"GMS Version 1.1");//目标进程的窗口的captain
    if(pWnd)   
    {   
        pWnd->SendMessage(WM_MYMESSAGE, NULL, NULL);
    }   

窗口对象的 .h:
    #define WM_MYMESSAGE WM_USER + 1
    afx_msg LRESULT OnMyMessage(WPARAM wp, LPARAM lp);

窗口对象的.cpp:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
   ...
   ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)
   ...
END_MESSAGE_MAP()

LRESULT CMainFrame::OnMyMessage(WPARAM wp, LPARAM lp)
{
    AfxMessageBox("Hello World");
}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-16 09:57

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表