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

WinExec

函数原型:

__drv_preferredFunction("CreateProcess","Deprecated. See MSDN for details")
WINBASEAPI
UINT
WINAPI
WinExec(__in LPCSTR lpCmdLine,__in UINT uCmdShow);

preferred : 更好的

__drv_preferredFunction("CreateProcess", "Deprecated. See MSDN for details") 是 Windows 驱动开发中用于静态代码分析工具(如 PREfast for Drivers)的注解,主要作用是标记特定函数已被弃用,并推荐使用替代函数(此处为 CreateProcess)。


WinExec 是 Windows API 中的一个函数,主要用于执行外部应用程序或命令,但其设计初衷是为兼容早期的 ​​16 位 Windows 系统​​,现代开发中已被 CreateProcess 取代。以下是其核心解析:


⚙️ ​​函数作用​

WinExec 用于启动一个外部可执行程序(.exe命令行命令,并控制其窗口的显示状态。它通过简单的参数实现快速调用,适合基础场景,但功能较为有限。


示例1:

(1)

#include <windows.h>int main() {// 打开记事本(正常窗口)UINT ret = WinExec("notepad.exe", SW_SHOW);// 检查返回值if (ret <= 31) {// 处理错误(例如文件未找到)}return 0;
}

(2)

#include <Windows.h>int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR nCmdLine,int iCmdShow) {WinExec("calc.exe", SW_SHOW);return 0;
}

功能:打开记事本

(3)

WinExec("Notepad.exe", SW_HIDE);
//会出现在任务管理器中,但不会显示在任务栏。

示例2:

运行ScreenToGif.exe:

#include <Windows.h>
#include <stdlib.h>#include <iostream>
#include "tchar.h"
int main(int argc, char* argv[]) {int res = WinExec("E:\\ScreenToGif\\ScreenToGif.exe", SW_SHOW);std::cout << res<<'\n';if (res == 0) {std::cout << "系统内存或资源不足";}else if (res == ERROR_BAD_FORMAT) {std::cout << ".EXE文件格式无效";}else if (res == ERROR_FILE_NOT_FOUND) {std::cout << "指定的文件没有找到";}else if (res == ERROR_PATH_NOT_FOUND) {std::cout << "指定的路径没有找到";}return 0;
}

 注意:路径中是\\

同理:

打开网易词典

int res = WinExec("E:\\网易有道词典\\Dict\\YodaoDict.exe", SW_SHOW);

 打开指定的txt文件

	int res = WinExec("notepad.exe D:\\2.txt", SW_SHOW);

这样也可以:

	std::string str("notepad.exe D:\\work\\版本\\1.0.1\\OfficeAssistant2.0\\Debug\\license.txt");int res = WinExec(str.c_str(), SW_SHOW);

这样也可以:

	QString str1("notepad.exe D:\\work\\learn_git\\Git\\2.txt");int res = WinExec(str1.toStdString().c_str(), SW_SHOW);

这样也可以:

QString中文乱码_qstring 中文_Coder-LiyG的博客-CSDN博客

	QString str1=QString::fromLocal8Bit("notepad.exe D:\\work\\版本\\1.0.1\\OfficeAssistant2.0\\Debug\\license.txt");QByteArray by = str1.toLocal8Bit();int res = WinExec(str1.toLocal8Bit().constData(), SW_SHOW);

http://www.dtcms.com/a/360217.html

相关文章:

  • Nginx反向代理及配置
  • c++ 线程局部存储(Thread-Local Storage,TLS)
  • Langflow Memory 技术深度分析
  • java--浅拷贝深拷贝
  • Introduction to GIS —— Chapter 3(Vector Data Model)
  • 雪花算法生成分布式ID
  • AI 智能体汇总,自动执行任务的“真 Agent”
  • 动态规划入门(三):一些经典动态规划模型
  • 赵玉平《刘备谋略》读书笔记(下部)
  • 小迪自用web笔记22
  • 01背包day35
  • 设计模式 | 常见的设计模式(单例、工厂、代理、适配器、责任链等等)
  • VisionProC#联合编程火花塞距离检测与VisionPro操作
  • libmodbus库,c++配置方法
  • 【CUDA入门·Lesson 1】Ubuntu实战:CUDA 概念、nvidia-smi 工具与 GPU 参数详解
  • 在Unity中,让子物体不随父物体移动或转动的方法!
  • 下一代防火墙(NGFW):从定义到功能
  • 试试 Xget 加速 GitHub 克隆仓库
  • 【WEB】[BUUCTF] <GXYCTF2019禁止套娃>《php函数的运用》
  • 大模型RAG项目实战:向量数据库Faiss
  • 【初始web3】什么是web3
  • 大模型时代:用Redis构建百亿级向量数据库方
  • 【自记】 Python 中函数参数前加 *(单星号)的解包可迭代对象写法说明
  • OpenCL C 内存对象
  • 第2.5节:中文大模型(文心一言、通义千问、讯飞星火)
  • 在线图片特效工具,600种创意模板
  • Python入门教程:常用第三方库Matplotlib(基本用法)下载、安装、参数解析教程
  • 案例——从零开始搭建 ASP.NET Core 健康检查实例
  • 【MLLM】语音端到端大模型和Voice Agent发展
  • 【Java进阶】Java与SpringBoot线程池深度优化指南