window句柄通讯例子

//发送端
void MainWindow::on_pushButton_clicked()
{
    HWND hWnd = ::FindWindowW(NULL, L"ProgressBar");
    if (hWnd != NULL) {
        setWindowTitle("Send");
        QString str=ui->lineEdit->text();
        QByteArray st = str.toLocal8Bit();
        COPYDATASTRUCT cpd;
        cpd.dwData = 0;
        //            cpd.cbData = str.size()+1;
        cpd.cbData = st.length()+1;
        cpd.lpData = st.data();
        ::SendMessageW(hWnd, WM_COPYDATA, NULL, (LPARAM)&cpd);
 
        //            qDebug()<<"cpd.cbdata:%s"<<cpd.cbData;
 
        ui->m_label->setText("Message has been sent."+QString(str.toLocal8Bit().data()));
    } else {
        setWindowTitle("receive");
        ui->m_label->setText("Ready...");
    }

}

//接受端

bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
    MSG* msg = reinterpret_cast<MSG*>(message);
    int msgType = msg->message;
 
    if (msg->message == WM_COPYDATA)
    {
        COPYDATASTRUCT * p = reinterpret_cast<COPYDATASTRUCT *>(msg->lParam);
        HWND hWnd = ::FindWindowW(NULL, L"Send");
        MessageBox(hWnd,(LPCTSTR)(p->lpData),NULL,msgType);
        char *t = static_cast<char *>(p->lpData);
        const QByteArray bb=QByteArray(static_cast<char *>(p->lpData));
        QString recv=QString::fromLocal8Bit(bb);
        ui->textEdit->append(recv);
        qDebug()<<":%d"<<recv.toInt();
        ui->textEdit->append(QString::number(recv.toInt()));
        //            ui->label->setText(QString::fromLocal8Bit(bb));
 
        ui->label_2->setNum((int)strlen(t));
    }
    return false;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值