QWidget(c++)嵌入window环境的exe

news/2024/9/17 12:59:46/ 标签: c++, qt

QWidget(c++)嵌入window环境的exe

我用的msvc2017 64bit编译器会报这个错误

visual.obj:-1: error: LNK2019: __imp_FindWindowW "public: __cdecl Visual::Visual(class QWidget *)" (??0Visual@@QEAA@PEAVQWidget@@@Z)

然后改成minGw 64bit 就不会报错

#ifndef VISUAL_H
#define VISUAL_H#include <QWidget>
#include <QProcess>
#include<Windows.h>
#include<QWindow>#include <Windows.h>
#include <iostream>
#include <WinUser.h>QT_BEGIN_NAMESPACE
namespace Ui { class Visual; }
QT_END_NAMESPACEclass Visual : public QWidget
{Q_OBJECTpublic:Visual(QWidget *parent = nullptr);~Visual();private:Ui::Visual *ui;QProcess *process;QWindow * m_window;
};
#endif // VISUAL_H
#include "visual.h"
#include "ui_visual.h"#include <Windows.h>
#include <iostream>
#include <WinUser.h>Visual::Visual(QWidget *parent): QWidget(parent), ui(new Ui::Visual)
{ui->setupUi(this);process = new QProcess(this);//必须先启动exe,才能获取到它的句柄QString cmd ="C:/Program Files/Tencent/WeChat/WeChat.exe";STARTUPINFO si = { sizeof(si) };PROCESS_INFORMATION pi;si.dwFlags = STARTF_USESHOWWINDOW;si.wShowWindow = true;bool bRet = CreateProcess(NULL,(LPWSTR)cmd.toStdWString().c_str(),NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL, &si, &pi);//延时是为了保证exe程序充足启动时间,才能获取句柄Sleep(1000);//窗口的类名和窗口的标题。要专门用spy工具去获取,下面有图QString className = "WeChatLoginWndForPC"; // 记事本窗口的类名QString windowName = "微信"; // 记事本窗口的标题// 查找窗口句柄WId wid = (WId)FindWindow((LPCWSTR)className.unicode(), (LPCWSTR)windowName.unicode());//      if (wid == 0) {
//          std::cerr << "未找到窗口!" << std::endl;
//          return ;
//      }m_window = QWindow::fromWinId(wid);m_window->setFlags(m_window->flags() | Qt::CustomizeWindowHint | Qt::WindowTitleHint); //QWidget *m_widget;m_widget = QWidget::createWindowContainer(m_window, this->ui->widget);m_widget->setMinimumSize(800, 800);ui->widget->layout()->addWidget(m_widget);
}Visual::~Visual()
{delete ui;
}

我这里使用vs的spy工具,获取窗口的 标题和类名
在这里插入图片描述

最后是这种效果

在这里插入图片描述


http://www.ppmy.cn/news/1523296.html

相关文章

SprinBoot+Vue二手回收微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…

网络ACL详解-从原理到实战模拟

引言 在复杂多变的网络环境中&#xff0c;保障网络安全和数据传输的合法性、高效性至关重要。访问控制列表&#xff08;Access Control Lists&#xff0c;简称ACL&#xff09;作为网络安全的重要组成部分&#xff0c;广泛应用于各种网络设备中&#xff0c;用以控制网络流量的流…

分波面双光束干涉

分波面双光束干涉练习题 在杨氏双缝干涉实验中&#xff0c;两缝间距为0.5mm&#xff0c;缝到屏幕的距离为1.5m。用波长为600nm的单色光照射双缝&#xff0c;求&#xff1a; (1) 中央明纹到第三级亮纹的距离。 (2) 相邻两明纹间的距离。在薄膜干涉中&#xff0c;一束白光垂直照…

chapter13-常用类——(StringBuffer StringBuilder)—day15

475-StringBuffer结构剖析 476-StringBuffer转换 477-StringBuffer方法

【MA35D1】buildroot 编译使用经验

文章目录 芯片介绍Buildroot开发Linux实践环境搭建代码获取编译执行步骤&#xff08;仅适用于我公司产品&#xff09; 后续有需要更改的输出文件目录 芯片介绍 NuMicro MA35D1系列为一颗异核同构的多核心微处理器&#xff0c;适用于高端 Edge IIoT Gateway。它是基于双核 64 位…

读go语言自制解释器(一)生成ast

简介 本节内容主要介绍使用go语言&#xff0c;解析自定义语言monkey&#xff0c;生成ast&#xff08;抽象语法树&#xff09;的过程。主要分为两部分&#xff1a;词法分析和语法分析。 词法分析代码如下 package lexerimport "monkey/token"type Lexer struct {in…

【K8S实践笔记】Kubernetes(v1.28)集群搭建部署(1)

基于三台运行CentOS 8的服务器(IP地址为192.168.10.x)来搭建Kubernetes v1.28.2集群的详细步骤。我们将使用kubeadm工具来简化这一过程,并选择Calico作为CNI插件。 声明:本文是实战案例,经过实测检验,提供完整的解决方案。 包括国内网络问题的解决,提供完整的配置文件,…

【C++】——string类的使用

目录 一.为什么学习string类&#xff1f; 1.1 C语言的字符串 二. 标准库中的string类 2.1 string类(了解) 2.2 string类成员函数 ● string类对象的常见构造 ● string类析构函数 ● 赋值重载 2.3 string的迭代器 <1>正向迭代器 Iterator <2> 反向迭代器…

点餐小程序实战教程04变量定义和初始化

目录 1 什么是变量2 如何创建变量3 具体该选择什么类型4 变量的初始化5 await/async6 调试我们的程序7 运行我们的代码总结 日常碰到的最多的一句话是&#xff0c;我看到代码就发憷&#xff0c;我一点基础也没有。那低代码开发需要掌握什么样的基础&#xff0c;怎么才算是掌握了…

Java笔试面试题AI答之正则表达式(2)

文章目录 7. 简述Java正则表达式零宽断言 &#xff1f;8. 简述Java正则表达式贪婪与懒惰 &#xff1f;贪婪匹配&#xff08;Greedy Matching&#xff09;懒惰匹配&#xff08;Lazy Matching&#xff09;区别与应用示例 9. 简述Java正则表达式POSIX 字符类&#xff08;仅 US-ASC…

云计算day38

⼀、编排分类 单机容器编排: docker-compose 容器集群编排: docker swarm、mesosmarathon、kubernetes 应⽤编排: ansible(模块&#xff0c;剧本&#xff0c;⻆⾊) ⼆、系统管理进化史 1. 传统部署时代 早期&#xff0c;各个组织是在物理服务器上运⾏应⽤程序。 由于⽆法…

QT中调用C#的库,如何操作

https://www.jb51.net/article/225143.htm https://www.cnblogs.com/symcheal/p/14639959.html 总的来说: 1、纯纯的C#库的制作 2、CLR库的制作 需要把C#的库拷到项目目录下(#using); // CLRLibrary.h#pragma onceusing namespace System<

浏览器百科:网页存储篇-如何在Chrome中打开Cookie(二)

1.引言 在上一章节《浏览器百科&#xff1a;网页存储篇-Cookie详解&#xff08;一&#xff09;》中&#xff0c;我们深入探讨了 Cookie 的基本概念、组成部分及其在网页存储中的重要作用。理解了 Cookie 的基础知识后&#xff0c;下一步是掌握如何在实际开发过程中管理和调试这…

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战&#xff1a;技术创新引领未来 近年来&#xff0c;国产游戏行业蓬勃发展&#xff0c;技术水平不断提升&#xff0c;许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎&#xff0c;从AI技术到服务器架构&#xff0c;国产游戏已实现质的飞跃。然…

9.9(QT Day 2)

将day1做的登录界面升级优化【资源文件的添加】 在登录界面的登录取消按钮进行以下设置&#xff1a; 使用手动连接&#xff0c;将登录框中的取消按钮使用第2种方式的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt4版本的连接到自定义…

六、深入理解JVM 执行引擎

文章目录 前端编译与后端编译字节码指令是如何执行的解释执行与编译执行热点代码识别客户端编译器与服务端编译器 后端编译优化技术方法内联 Inline逃逸分析 Escape Analysis锁消除 lock elision 从计算机程序出现的第一天起&#xff0c;对执行效率的追求就是程序员天生的坚定信…

flask文件下载

一、定义 flask 文件下载python 接收tar 文件 二、实现 flask 文件下载 from flask import Flask, send_file, request import os from gevent.pywsgi import WSGIServer import logginglogging.basicConfig(levellogging.INFO, format"%(asctime)s %(filename)s [lin…

《卷积神经网络 CNN 原理探秘》

CNN基本原理详解 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称CNN&#xff09;&#xff0c;是一种前馈神经网络&#xff0c;人工神经元可以响应周围单元&#xff0c;可以进行大型图像处理。卷积神经网络包括卷积层和池化层。 卷积神经网络是受…

输出CAD图中第一个图元类型——c#实现

复制改图元到一个新dwg中&#xff0c;启动代码可实现 如下图设置&#xff1a; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using System; using System.Collections.Generic; using System.Linq…

JAVA学习-练习试用Java实现“单词反转”

问题&#xff1a; 随便输出一个字符串 String str "45abc,defg"; 里面含有 abc&#xff0c;de&#xff0c;fg 三个单词 怎么处理能让单词反转&#xff0c;其他顺序不变呢 输出 “45cba,edgf”; 解答思路&#xff1a; 以下是使用 Java 实现的单词反转程序&#xff1a…