当前位置: 首页 > news >正文

QT6与VS下实现没有CMD窗口的C++控制台程序

一.QT6下实现没有CMD窗口的C++控制台程序

1.普通的控制台程序都会有一个CMD的黑色框,有时候需要在程序中调用一个exe程序,不想CMD窗口出现,下面讲详细的设置方法.

2.代码中添加:

#ifdef Q_OS_WIN    //不显示cmd窗口

#include <windows.h>

    HWND hWnd = GetConsoleWindow();

    ShowWindow(hWnd, SW_HIDE);  // 隐藏控制台窗口

#endif

3.具体代码示例

#include <QtCore>

#include <windows.h>

int main(int argc, char *argv[])

{

#ifdef Q_OS_WIN    //不显示cmd窗口

#include <windows.h>

    HWND hWnd = GetConsoleWindow();

    ShowWindow(hWnd, SW_HIDE);  // 隐藏控制台窗口

#endif

    QFile file("D:/log.txt");

    file.open(QIODevice::WriteOnly | QIODevice::Append);

    for(int i=0;i<50;i++)

    {

        file.write(("[" + QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss") + "] 服务运行中\n").toUtf8());

        file.flush();  // 实时写入

        qDebug()<<i;

    }

    file.close();

    return 0;

}

4.程序中调用外部exe程序

   #include <QProcess>

   QProcess *process = new QProcess();

    // 方法1:直接启动程序(适用于路径中不含空格的情况)

    // process->start("C:/Program Files/MyApp/myapp.exe");

    // 方法2:使用参数列表(推荐,可处理带空格的路径)

    QString program = "C:/Program Files/MyApp/myapp.exe";

    QStringList arguments;

    arguments << "--param1" << "value1" << "--param2" << "value2";

    process->start(program, arguments);

    // 等待程序启动

    if (!process->waitForStarted()) {

        qDebug() << "启动程序失败:" << process->errorString();

        delete process;

        return 1;

    }

    qDebug() << "程序已启动,进程ID:" << process->processId();

5.关闭进程

CMD命令行:taskkill /f /im bg_service.exe

代码中:system("taskkill /f /im bg_service.exe");

二.VS2022下实现没有CMD窗口的C++控制台程序

1.普通的控制台程序都会有一个CMD的黑色框,有时候需要在程序中调用一个exe程序,不想CMD窗口出现,下面讲详细的设置方法.

2.代码中添加:

#ifdef Q_OS_WIN    //不显示cmd窗口

#include <windows.h>

    HWND hWnd = GetConsoleWindow();

    ShowWindow(hWnd, SW_HIDE);  // 隐藏控制台窗口

#endif

3.具体代码示例

#define _CRT_SECURE_NO_WARNINGS

#include <windows.h>

#include <fstream>

#include <ctime>

int main()

{

#ifndef Q_OS_WIN    //不显示cmd窗口

    HWND hWnd = GetConsoleWindow();

    ShowWindow(hWnd, SW_HIDE);  // 隐藏控制台窗口

#endif

    std::ofstream file("D:/Log_vs.txt", std::ios::app);

    for (int i = 0; i < 100; ++i) {

        time_t now = time(nullptr);

        file << "[" << ctime(&now) << "] 数据块 " << i << "\n";

        file.flush();

        file.rdbuf()->pubsync();

        Sleep(1000);

    }

    file.close();

    return 0;

}

4.调用外部exe程序

    std::string exePath = R"(D:/service_vs/x64/Debug/service_vs.exe)";

    int result = system(exePath.c_str());

   // 检查启动结果

   if (result == 0) {

       std::cout << "成功启动程序: " << exePath << std::endl;

   }

   else {

       std::cout << "启动程序失败,返回码: " << result << std::endl;

   }

   

5.关闭进程

CMD命令行:taskkill /f /im bg_service.exe

代码中:system("taskkill /f /im bg_service.exe");

http://www.lryc.cn/news/572491.html

相关文章:

  • 日本生活:日语语言学校-日语作文-沟通无国界(3)-题目:わたしの友達
  • 编程马拉松的定义、运作与发展
  • C语言标准I/O库详解:文件操作与缓冲区机制
  • Qt蓝图式技能编辑器状态机模块设计与实现
  • html实现登录与注册功能案例(不写死且只使用js)
  • 深入解析select模型:FD_SET机制与1024限制的终极指南
  • Linux系统远程操作和程序编译
  • 23.ssr和csr的对比?如何依赖node.js实现
  • [11-5]硬件SPI读写W25Q64 江协科技学习笔记(20个知识点)
  • 嵌入式编译工具链熟悉与游戏移植
  • 基于C#的Baumer相机二次开发教程
  • OpenSSL引擎 + PKCS11 + SoftHSM2认证
  • WHAT - React Native 开发 App 从 0 到上线全流程周期
  • 【嵌入式】鲁班猫玩法大全
  • 第1章: 伯努利模型的极大似然估计与贝叶斯估计
  • 软件工程(期末复习班)
  • 23种设计模式--简单工厂模式理解版
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【外设开发】
  • 零基础指南:利用Cpolar内网穿透实现Synology Drive多端笔记同步
  • Linux基本指令篇 —— mkdir指令
  • MFC中使用CRichEditCtrl控件让文本框中的内容部分加粗
  • 分布变化的模仿学习算法
  • 257. 二叉树的所有路径(js)
  • 【数据治理】要点整理-信息技术服务治理第5部分-数据治理规范-GBT+34960.5-2018
  • C#设计模式之AbstractFactory_抽象工厂_对象创建新模式-练习制作PANL(一)
  • C# winform教程(二)----GroupBox
  • vscode设置代码字体
  • Web 应用防火墙(WAF)工作原理、防护策略与部署模式深度剖析
  • css语法中的选择器与属性详解:嵌套声明、集体声明、全局声明、混合选择器
  • 什么是池化