zoukankan      html  css  js  c++  java
  • 获取窗口句柄,并向窗口发送自定义消息

    转载自:http://www.cnblogs.com/pen-ink/articles/1815306.html#commentform

    //①自定义消息
    //两个进程中定义相同的消息
    #define WM_COMM (WM_USER + 100)

    //发送窗口发送按钮处理,自定义消息为WM_COMM,接收窗口为DataRecv
    void CDataSendDlg::OnBnClickedOk()
    {
    // TODO: 在此添加控件通知处理程序代码
    CWnd *pWnd = CWnd::FindWindow(NULL, _T("DataRecv"));
    if(pWnd == NULL)
    {
    MessageBox(_T("Unable to find DataRecv."));
    return;
    }
    pWnd->PostMessage(WM_COMM, NULL, NULL);
    }
    //接收窗口处理WM_COMM自定义消息
    BEGIN_MESSAGE_MAP(CDataRecvDlg, CDialog)
    ON_MESSAGE(WM_COMM, OnRecvMsg)
    END_MESSAGE_MAP()

    LRESULT CDataRecvDlg::OnRecvMsg(WPARAM, LPARAM)
    {
    MessageBox(_T("I Received Message!"));
    return (LRESULT)0;
    }
    //②WM_COPYDATA消息,主要目的是允许在进程间传递只读数据(COPYDATASTRUCT结构封装),用SendMessage()发送
    //发送窗口发送只读数据
    void CDataSendDlg::OnBnClickedOk()
    {
    // TODO: 在此添加控件通知处理程序代码
    CString str;
    GetDlgItemText(IDC_EDIT2,str);
    CWnd *pWnd = CWnd::FindWindow(NULL, _T("DataRecv"));
    if(pWnd == NULL)
    {
    MessageBox(_T("Unable to find DataRecv."));
    return;
    }
    CString data;
    GetDlgItemText(IDC_EDIT2, data);
    COPYDATASTRUCT cpd = {0};
    cpd.cbData = (data.GetLength() + 1) * 2;
    cpd.lpData = (PVOID)data.GetString();
    pWnd->SendMessage(WM_COPYDATA, 0, (LPARAM)&cpd);
    }
    //接收窗口接收只读数据
    BOOL CDataRecvDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    CString str;
    str = (LPCWSTR)pCopyDataStruct->lpData;
    str = str.Left(pCopyDataStruct->cbData);
    SetDlgItemText(IDC_EDIT1, str);
    return CDialog::OnCopyData(pWnd, pCopyDataStruct);
    }

    // 发送WM_CLOSE 消息

    void CSendMessageToWindowDlg::OnBnClickedButtonSendmessage()
    {
    // TODO: 在此添加控件通知处理程序代码
    CWnd *pWnd = CWnd::FindWindow(NULL, _T("spyXX"));
    if (pWnd == NULL)
    {
    MessageBox(_T("接收程序没有运行!"));
    return;
    }

    pWnd->SendMessage(WM_CLOSE, NULL, 0);
    }

  • 相关阅读:
    linux 日常命令
    apache2 修改默认php版本
    centos 6.5 创建守护进程
    ubuntu18.04 Yii2.0 安装yii2-queue并在Linux启动守护进程监听消息设置
    Ubuntu18.04 使用 deepinwine 安装企业微信后无法查看图片/头像/登陆二维码的解决方法
    CentOS 8安装Redis的两种方式
    如何在ubuntu 18.04中升级python 3.6到3.7
    Navicat 15 premium AppImage格式激活
    爬取彼岸图网实例
    requests库的介绍及get请求 + 小案例
  • 原文地址:https://www.cnblogs.com/bkcarlos/p/6691336.html
Copyright © 2011-2022 走看看