张国伟 发表于 2024-7-23 10:48:59

QT调用VNC并放到一个窗口中

1.VNC资源下载

本例中的这个VNC可以从以下连接中下载,也可以从官网上下载,应该都是类似的。
https://download.csdn.net/download/xiaoding_ding/89549092
下载完成后放到项目的release文件夹中
https://i-blog.csdnimg.cn/direct/fce3c4b7946945318dffcc095dfb15b1.png
2.程序中引用

2.1在主界面中放置一个按钮,命名为vnc_connect

https://i-blog.csdnimg.cn/direct/4f3bb06abfad4e2c90b810bbea9f3547.png
2.2 通过按钮转到槽,修改mainwindow.cpp

https://i-blog.csdnimg.cn/direct/a1083335cb854da09918b22b86a5caa9.png
内里的内容如下: 
    QProcess program(this);
    QString cmd ="VNC-Viewer-7.6.1-Windows-64bit.exe";
    program.startDetached(cmd);

    Sleep(200);
    QString classname = "os::Window::Dialog";//窗口的类名
    QString windowname = "RealVNC Viewer";//窗口标题名
    WId winId = (WId)FindWindow((LPCWSTR)classname.unicode(),(LPCWSTR)windowname.unicode());
    qDebug()<<winId;
    QWindow *window = QWindow::fromWinId(winId);

    QWidget *widget = QWidget::createWindowContainer(window);
    widget->show();  2.3增长头文件

增长图示中的四个
https://i-blog.csdnimg.cn/direct/81d4d114796a4b8995ac83576831ba5c.png
3.运行效果

点击按钮就是这种效果
https://i-blog.csdnimg.cn/direct/b3cc295085964a28a3a211eeffb4b5a7.png 4.问题分析

将这个窗口关闭后,再次点击“打开VNC”按钮后,会表现空缺
https://i-blog.csdnimg.cn/direct/dba4ad25894342f88d919c96c5c27374.png
这是因为程序中的process是独立执行的。关闭这个窗口,VNC历程还在。
https://i-blog.csdnimg.cn/direct/a35eb3b961b144029b05a93c5c3c1e80.png
在使命管理中杀死这个历程后,就可以重新调用了。
5.窗口句柄的获得

5.1打开visual studio,点击搜索,搜索功能spy

https://i-blog.csdnimg.cn/direct/b6a36b060f8c4935946bb415518784b9.png
5.2打开vnc和spy,从搜索中拖动谁人2中的标靶到VNC标题栏中。

https://i-blog.csdnimg.cn/direct/f28e7589bfec4505a0bbd416b96b7947.png 5.3在程序中进行对应

https://i-blog.csdnimg.cn/direct/559dc0afbf7a43c9a4a549c6836670b6.png 6.总结

中央总是有各种各样的问题,本例提供了一种探索。中央有问题照旧可以多搜索一下干系文章。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: QT调用VNC并放到一个窗口中