OleSetClipboard: Failed to set mime data (text/plain) on clipboard: COM error 0xffffffff800401d0 (U

QT调用剪切板错误
在创建新类或者GUI程序使用.ui方式之后,在MainWindows中使用QClipboard会报错,执行完clipboard->setText之后剪切板是空的

后面发现在main.cpp中是可以用的

现在问题又出现在怎么把MainWindows中的QString复制到剪切板中

首先在MainWindows中创建信号和槽函数,主要是信号,槽函数只是起到一个使用剪切板的作用

signals:
    void QQ_Report_Error_Info(QString);
private slots:
    void QQ_Report_EN_Fun_slots(QString info);

这里的槽函数是一个找QQ窗口的程序

HWND QQ_HWND;
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {
    char title[256];

    // 获取窗口标题
    if (GetWindowTextA(hwnd, title, sizeof(title)) > 0) {
        // 输出窗口标题
        QString Dis=QString::fromLocal8Bit(title);
        qDebug() << "Window Handle:" << hwnd << ", Title:" << Dis;
        if(Dis.indexOf("Android")!=-1)
        {
            QQ_HWND=hwnd;
            qDebug() << "Window Handle:" << hwnd << ", Title:" << Dis;
            return 0;
        }
    }
    return TRUE; // 继续枚举
}


void MainWindow::QQ_Report_EN_Fun_slots(QString info)
{
    if(EnumWindows(EnumWindowsProc, 0)) // 枚举所有窗口
    {
        qDebug()<<"没找到";
    }else{
        qDebug()<<"找到了";
        qDebug() << "Window Handle:" << QQ_HWND;

        ShowWindow(QQ_HWND, SW_MAXIMIZE);
        SetWindowPos(QQ_HWND, HWND_TOP,0, 0, 1000, 700, SWP_SHOWWINDOW);//微信窗口置顶
        SetCursorPos(18,650);//窗口移动
        /*
         *模拟鼠标键盘按键操作
         */
        mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
        Sleep(100);
        mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
        Sleep(500);
        keybd_event(17,0,0,0);
        keybd_event('V',0,0,0);
        Sleep(10);
        keybd_event(17,0,KEYEVENTF_KEYUP,0);
        keybd_event('V',0,KEYEVENTF_KEYUP,0);//ctrl + V
        Sleep(500);
        keybd_event(13,0,0,0);
        Sleep(10);
        keybd_event(13,0,KEYEVENTF_KEYUP,0);//enter
    }
}

在main.cpp中

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    QObject::connect(&w, &MainWindow::QQ_Report_Error_Info, [](const QString message) {
        QClipboard *clipboard = QApplication::clipboard();
        QString Test=message;
        clipboard->setText(Test);
    });   //这里就实现将MainWindows中的QString复制到剪切板上了
    
    //QObject::connect(&w,SIGNAL(&MainWindow::QQ_Report_Error_Info(QString)),&w,SLOT(&MainWindow::QQ_Report_EN_Fun_slots(QString)));   

    return a.exec();
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值