[QT]设置程序仅打开一个,再打开就唤醒已打开程序的窗口

news2024/11/25 10:31:06

需求:speedcrunch 这个软件是开源的计算器软件。配合launch类软件使用时,忘记关闭就经常很多窗口,强迫症,从网上搜索对版本进行了修改。

#include "gui/mainwindow.h"

#include <QCoreApplication>
#include <QApplication>

#include <QSharedMemory>
#include <QMessageBox>

#include <Windows.h>
#include <WinUser.h>

int main(int argc, char* argv[])
{
    QApplication application(argc, argv);

    static QSharedMemory *singleApp = new QSharedMemory("SingleApp");//创建“SingleApp”的共享内存块
    if(!singleApp->create(1))//创建失败,说明已经有一个程序运行,
    {
        //弹出提示框注意:该提示应该在 qApp->quit();之前,否则提示框将会一闪而过
        //QMessageBox::information(NULL,"tips","The program is already running");
        QString name = "Qt5152QWindowIcon";//窗口的类名
        QString windowname = "SpeedCrunch";//窗口标题名
        HWND hwnd = FindWindow((LPCWSTR)name.unicode(),(LPCWSTR)windowname.unicode());//查找窗口句柄
        if (hwnd == 0) {
             QMessageBox::information(NULL,"tips","not find wind");
        }
        
        ShowWindow(hwnd,  SW_RESTORE);//激活并置顶窗口,ShowWindow里面的参数可以网上搜一下,不同功能不同参数
        SetForegroundWindow(hwnd);
        
        qApp->quit();//退出当前程序
        return -1;
    }

    QCoreApplication::setApplicationName("SpeedCrunch");
    QCoreApplication::setOrganizationDomain("speedcrunch.org");

    MainWindow window;
    window.show();

    application.connect(&application, SIGNAL(lastWindowClosed()), &application, SLOT(quit()));

    return application.exec();
}

差异图下图:

findwindow的方法需要添加user32的库,因为speedcrunch已经添加,则在编译文件中未改动。 

效果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/941429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何基于自己训练的Yolov5权重,结合DeepSort实现目标跟踪

网上有很多相关不错的操作demo&#xff0c;但自己在训练过程仍然遇到不少疑惑。因此&#xff0c;我这总结一下操作过程中所解决的问题。 1、deepsort的训练集是否必须基于逐帧视频&#xff1f; 我经过尝试&#xff0c;发现非连续性的图像仍可以作为训练集。一个实例&#xff0…

kubernetes搭建及基本使用

1. 前置要求准备 一台或多台机器&#xff0c;操作系统 CentOS7.x-86_x64硬件配置&#xff1a;2GB 或更多 RAM&#xff0c;2 个 CPU 或更多 CPU&#xff0c;硬盘 30GB 或更多集群中所有机器之间网络互通可以访问外网&#xff0c;需要拉取镜像禁止 swap 分区 此处我是白嫖的谷歌云…

No122.精选前端面试题,享受每天的挑战和学习

文章目录 1、vue中key的作用2、如何让vue页面重新渲染3、组件之间通信方式4、vue为什么要mutation、 action操作5、插槽、具名插槽、作用域插槽6、用set求两个数组的交集7、树用js如何实现&#xff1f; 1、vue中key的作用 在Vue中&#xff0c;key的作用是帮助Vue识别每个VNode…

性能评估之旅:软件测试的神秘工具与方法论

引言&#xff1a;性能评估的重要性 在当今的软件开发领域&#xff0c;性能评估已经成为了一个不可或缺的环节。随着用户对于软件响应速度和稳定性的要求越来越高&#xff0c;如何确保软件在各种环境下都能稳定运行&#xff0c;成为了每一个开发者和测试者必须面对的问题。性能…

【App端】uni-app使用echarts和百度地图api

目录 前言方案一&#xff1a;echarts百度地图获取百度地图AK安装echarts和引入百度地图api完整使用代码 方案二&#xff1a;echarts地图和柱状图变形动画完整使用代码 前言 近期的app项目中想加一个功能&#xff0c;展示全国各地的某一数据统计情况&#xff0c;想来想去&#…

搭建Android自动化python+appium环境

一. 需要软件 1. JDK:JAVA安装后配置JDK环境 2. SDK:SDK下载后配置adb环境 3. Python:pyhton语言 4. Pycharm:python脚本编译工具 5. Appium-python-client:pyhton中的库 6. Appium客户端 二. 搭建步骤 1. 配置JDK环境 ①. 下载安装java: https://www.oracle.com/jav…

windows下Mysql安装配置教程

Mysql下载 在官网下载mysql community Server https://dev.mysql.com/downloads/mysql/ 可以选择下载压缩包或者MSI安装程序 使用压缩包安装 MySQL 压缩包安装通常需要以下步骤&#xff1a; 1. 下载 MySQL 安装包 你可以从 MySQL 官网上下载适合你系统的 MySQL 安装包&am…

Android软键盘弹出,底部的控件随之弹出,但整体布局不会向上弹

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.co…

浅析Linux 物理内存外碎片化

本文出现的内核代码来自Linux4.19&#xff0c;如果有兴趣&#xff0c;读者可以配合代码阅读本文。 一、Linux物理内存外碎片化概述 什么是Linux物理内存碎片化&#xff1f;Linux物理内存碎片化包括两种&#xff1a; 1.物理内存内碎片&#xff1a;指分配给用户的内存空间中未…

基于 xhr 实现 axios

基于 xhr 实现 axios 上面我们讲到二次封装 axios &#xff0c;但是现在我们尝试完全脱离 axios&#xff0c;自己实现一个 axios&#xff0c;由于 axios 底层是基于 xhr 做了二次封装&#xff0c;所以我们也可以尝试一下。 xhr 二次封装 src/plugins/xhr.js /*** 请求拦截器…

为什么说ASEMI-GBU812是新能源专用整流桥

编辑-Z GBU812是一种新能源专用整流桥&#xff0c;它在新能源领域扮演着重要的角色。下面是关于为什么说GBU812是新能源专用整流桥的几个原因&#xff1a; 首先&#xff0c;GBU812采用了新能源技术&#xff0c;具有高效能、低功耗和环保等特点。在新能源领域&#xff0c;特别是…

Git中smart Checkout与force checkout

Git中smart Checkout与force checkout 使用git进行代码版本管理,当我们切换分支有时会遇到这样的问题&#xff1a; 这是因为在当前分支修改了代码&#xff0c;但是没有commit,所以在切换到其他分支的时候会弹出这个窗口&#xff0c; 提示你选force checkout或者smart checko…

以udp协议创建通信服务器

概念图 创建服务器让A,B主机完成通信。 认识接口 socket 返回值&#xff1a;套接字&#xff0c;你可以认为类似fd 参数&#xff1a; domain->:哪种套接字&#xff0c;常用AF_INET(网络套接字)、AF_LOCAL(本地套接字)type->&#xff1a;发送数据类型&#xff0c;常用 …

sql 索引

如果表已经存在大量数据&#xff0c;突然需要插入大量数据&#xff0c;因为原来有索引结构&#xff0c;所以大批量数据写入&#xff0c;会导致维护索引&#xff0c;浪费资源。 可以先把表的索引删除&#xff0c;待数据插入完成&#xff0c;再创建索引。 这样可以节约资源和时间…

SAP物料分类账的简单理解

SAP物料分类账的简单理解 转自 SAP物料分类账的简单理解 - 知乎 一、SAP物料分类账理解 物料分类账&#xff0c;简称ML&#xff08;material ledger&#xff09;&#xff0c;其基本用途是可以用八个字概括“还原成本”、“还原库存”。即通过月底运行物料分类账&#xff0c;…

Docker修改容器ulimit的全部方案及各方案的详细步骤

要修改Docker容器的ulimit&#xff08;用户资源限制&#xff09;&#xff0c;有以下三种方案&#xff0c;每个方案的详细步骤如下&#xff1a; 方案一&#xff1a;在Dockerfile中设置ulimit 打开您的Dockerfile。在文件中添加以下命令来修改ulimit&#xff1a;RUN ulimit -n …

时空数据挖掘精选23篇论文解析【AAAI 2023】

今天和大家分享时空数据挖掘方向的资料。 时空数据挖掘是人工智能技术的重要分支&#xff0c;是一种采用人工智能和大数据技术对城市时空数据进行分析与挖掘的方法&#xff0c;旨在挖掘时空数据&#xff0c;理解城市本质&#xff0c;解决城市问题。 目前&#xff0c;时空数据…

世纪互联收入增长放缓,低于华尔街预期,全年业绩指引令投资者失望

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 全年业绩指引令投资者失望 世纪互联&#xff08;VNET&#xff09;在发布了第二季度喜忧参半的财务业绩后&#xff0c;依然坚持了此前发布的2023财年业绩指引。 财报显示&#xff0c;虽然世纪互联第二季度的收入同比增长了6…

谈判胜利!韩美合资厂平均薪资将提高25% | 百能云芯

据韩国时报报道&#xff0c;LG新能源与通用汽车在俄亥俄州成立的电动车电池公司Ultium Cells日前宣布&#xff0c;已与美国联合汽车工会&#xff08;UAW&#xff09;达成临时劳资协议&#xff0c;旨在将员工平均薪资提高25%。这一合作成为美国首个设有工会代表的电动车电池厂&a…

C# 使用SnsSharp实现文件拖拽功能

CSDN下载地址&#xff1a;https://download.csdn.net/download/sns1991sns/88041637 gitee下载地址&#xff1a;https://gitee.com/linsns/snssharp 技术优势&#xff1a; 不仅使用简单&#xff0c;还可解决由于系统管理权限问题导致的文件拖拽无响应问题。 使用举例&#x…