首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++用于启动多个命令提示的System()替代方案.WINAPI(无MFC)

在C++中,使用system()函数可以启动一个命令提示符窗口并执行相应的命令。然而,如果你想要同时启动多个命令提示符窗口并执行不同的命令,system()函数是不能满足需求的。

为了实现这个功能,你可以使用Windows API中的CreateProcess()函数。下面是一个使用CreateProcess()函数启动多个命令提示符窗口并执行不同命令的示例:

代码语言:cpp
复制
#include<Windows.h>
#include <TlHelp32.h>
#include<iostream>
#include<string>

int main() {
    // 创建第一个命令提示符窗口
    STARTUPINFO si1;
    PROCESS_INFORMATION pi1;
    ZeroMemory(&si1, sizeof(si1));
    ZeroMemory(&pi1, sizeof(pi1));
    si1.cb = sizeof(si1);
    std::string cmd1 = "cmd.exe /c echo Hello, World!";
    CreateProcess(NULL, (LPSTR)cmd1.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si1, &pi1);

    // 创建第二个命令提示符窗口
    STARTUPINFO si2;
    PROCESS_INFORMATION pi2;
    ZeroMemory(&si2, sizeof(si2));
    ZeroMemory(&pi2, sizeof(pi2));
    si2.cb = sizeof(si2);
    std::string cmd2 = "cmd.exe /c echo Welcome to the world of C++!";
    CreateProcess(NULL, (LPSTR)cmd2.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si2, &pi2);

    // 等待进程结束
    WaitForSingleObject(pi1.hProcess, INFINITE);
    WaitForSingleObject(pi2.hProcess, INFINITE);

    // 关闭进程和线程句柄
    CloseHandle(pi1.hProcess);
    CloseHandle(pi1.hThread);
    CloseHandle(pi2.hProcess);
    CloseHandle(pi2.hThread);

    return 0;
}

在这个示例中,我们使用了CreateProcess()函数来创建两个命令提示符窗口,并分别执行了不同的命令。注意,我们需要等待进程结束,然后再关闭进程和线程句柄。

这个示例展示了如何使用CreateProcess()函数来启动多个命令提示符窗口并执行不同的命令。你可以根据自己的需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WINDOWS核心编程--Windows程序内部运行机制

第三个参数 lpCmdLine 是一个以空终止字符串,指定传递给应用程序命令行参数。...例如:在 D 盘下有一个 sunxin.txt 文件,当我们用鼠标双击这个文件时将启动记事本程序( notepad.exe ),此时系统会将 D:/sunxin.txt 作为命令行参数传递给记事本程序...“\” 用于连接通常有两个方面: ①:在典型情况下用于转义连续多行宏定义。...HID_ 命令Help上下文 HID_TOOLS_SPELLING 0x18000~0x1DFFF IDP_ 消息框提示 IDP_INVALID_PARTNO 8~0xDEEF HIDP_ 消息框...静态连接库 UAFXCW.LIB 发行版本:具有Unicode支持MFC静态连接库 动态连接库命名规范: 名称&类型 _AFXDLL 唯一动态连接库(DLL)版本 WINAPI Windows

1.5K50

Windows 反消息钩子(1)

一、消息钩子使用 消息钩子分为本地(local)和远程(remote)两种(两个local system-wide hook例外,无关主题,不多说了)。...,为确保此数值在所有实例中均保持不变,将其存放于此模块所有实例共享数据区,若在exe程序中按此格式添加一int 变量 appNum,在程序启动时appNum++,则可以通过访问此变量数值,确定有多少个...exe实例,当然这种方法也可以替代同步对象用于启动一个实例。...不要以为自己没有在程序中安装钩子,程序中就一定没有安装钩子,在MFC4版本中,MFC会自己装一个local类型钩子,MFC7版本中好像没了。好了,下面介绍其实现。...SetWindowsHookEx函数ASCII版本SetWindowsHookExA HHOOK WINAPI Hook_SetWindowsHookExA( int idHook

54020
  • ATL CLR MFC Win32 常规 区别

    ---- 文章1 ATL用于编写COM程序,CLR是.NET公共语言运行库,MFC是指MFC类库,MFC程序是用这些类库做出程序,WIN32常规就是不用 MFC,使用API函数编程序。...从编程所处层次而言,WIN32为最底层,其次是MFC.然后是CLR. WIN32 winAPI MFC MFC类库 CLR .net库. WIN32常规就是不用MFC,使用API函数编程序。...所以C++/CLI目前还是微软一家之言。 ATL用于编写COM程序。ATL库貌似也年纪很大了,至少在我接触到VC时候就有它存在了。...MFC是微软基本类库,用于使用Visual C++开发环境创建本地应用程序。顾名思义,CLR具有跨平台、跨语言特性,各种语言都可以使用CLR开发.NET平台上应用程序。...3)为了使用CLR类库中Console类,在程序开始包含如下两行: #using using namespace System; //下列代码演示了如何使用CLR与MFC

    1.5K30

    BoundsChecker使用说明(代码调试)

    它通过驻留在 Visual C++ 开发环境内部自动调试处理程序来加速应用程序开发,缩短产品发布时间。BoundsChecker 对于编程中错误,大多数是C++中特有的提供了清晰详细分析。...非MFC程序也可以利用MS C-Runtime LibraryDebug Function加入内存泄漏检测功能。...当你确定要禁止该类型报错后,BoundsCheckes之后将不再给出这类型错误提示。 6.2设置 这样就可以忽略API报错。...c、 选择你想要禁止或过滤应用 2、 运行应用程序 a、 程序运行时,错误描述会出现在Program Error Detected对话框中 b、 被禁止错误提示部分不会提示...为将来要运行应用程序创建一个禁止方案 4、 你可以保存当前设置,禁止和过过滤方案以备以后使用 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126317.html

    1.6K20

    Simple Windows Service in C++

    这是一篇使用C++展示如何创建简单Windows服务文章。...源代码下载地址为:https://www.codeproject.com/KB/system/499465/SampleService.zip  介绍 这篇文章展示如何使用C++创建一个基本Windows...根据应用程序体系结构,服务在许多开发方案中非常有用。  背景 我在C++中找到Windows服务示例并不多。我使用MSDN编写这个非常基本Windows服务。  ...安装服务 你可以通过在命令提示符中运行一下命令来安装服务(注意要以管理员身份运行):     C:\>sc create "My Sample Service" binPath= C:\SampleService.exe...卸载服务 你可以从命令提示符通过运行以下命令卸载服务:     C:\>sc delete "My Sample Service" 历史 11/28/2012:文章和代码初始版本。

    75010

    基于visual c++之windows核心编程代码分析(8)自动下载更新程序

    参考链接: C++ wcscat() 我们编写Windows程序,经常需要自动更新,该功能如何实现呢,我们来看代码实现与注释讲解 #include "stdafx.h" #include "AutoUpdate.h...DWORD WINAPI UpdateThreadProc(LPVOID lParam) {     /*     *如果有必要,可以使用GetTempPath() 函数获取系统临时文件目录,将用到文件下载至该目录...WorkThreadProc(LPVOID lParam) {     MessageBox(NULL,L"工作线程已经启动。"...        _tprintf(_T("错误: MFC 初始化失败\n"));         nRetCode = 1;     }     else     {         //...wcsicmp(StartInfo,_T("/install")))         {             //AfxMessageBox(L"命令请求安装");             wchar_t

    56420

    QT编写DLL给外部程序调用,提供VCC#C调用示例(含事件)

    也发现有些用汇编和C封装,那估计是高手才能编写啊!那怎么办呢?眼看一星期交货期要到了,由于本人从来没有写过SDK开发包,心里那个着急啊,赶紧想出了三种处理方案。...方案一: 用自己最熟悉QT来写,毕竟QT也是C++一种嘛,应该可以和VC通用。初步实验,你妹啊,调用不起来,直接废弃。 方案二: 找VC高手,自己掏钱出来找人写,客户是上帝,那可不能耽误呢!...老朋友啊,当年编程入门,又记起了当年大学,当年图书馆,当年初恋! 搞就搞,新建MFC DLL,我妈呀,VC命名规则实在让人抓狂!半自动语法提示更是让我有种自杀冲动!...既然QT也是C++,而且有个大名鼎鼎WPS都是QT和MFC混合编程,所以肯定有方法,百度谷歌,找到一个qtwinmigrate东西,在这里万分感谢qtwinmigrate作者!...第五步:编写C#程序测试  1 using System;  2 using System.Collections.Generic;  3 using System.Text;  4 using System.Runtime.InteropServices

    80520

    消息钩子反拦截

    消息钩子分为本地(local)和远程(remote)两种(两个local system-wide hook例外,无关主题,不多说了)。local类型钩子函数只能拦截本进程消息。...,为确保此数值在所有实例中均保持不变,将其存放于此模块所有实例共享数据区,若在exe程序中按此格式添加一int 变量 appNum,在程序启动时appNum++,则可以通过访问此变量数值,确定有多少个...exe实例,当然这种方法也可以替代同步对象用于启动一个实例。...不要以为自己没有在程序中安装钩子,程序中就一定没有安装钩子,在MFC4版本中,MFC会自己装一个local类型钩子,MFC7版本中好像没了。好了,下面介绍其实现。...从上面的讨论我们可以得出一个最简单防侵入方案:在加载hook dll之前hook相应api使得加载失败,不过有一个缺陷:系统并不会因为一次失败而放弃,每次有消息产生欲call hook时系统都会试图在你进程加载

    56230

    Simple Windows Service in C++

    本文是来自CodeProject中一篇名为Simple Windows Service in C++译文,原文地址为:Simple Windows Service in C++,作者为:Mohit...这是一篇使用C++展示如何创建简单Windows服务文章。...根据应用程序体系结构,服务在许多开发方案中非常有用。 背景 我在C++中找到Windows服务示例并不多。我使用MSDN编写这个非常基本Windows服务。...安装服务 你可以通过在命令提示符中运行一下命令来安装服务(注意要以管理员身份运行): C:\>sc create "My Sample Service" binPath= C:\SampleService.exe...卸载服务 你可以从命令提示符通过运行以下命令卸载服务: C:\>sc delete "My Sample Service" 历史 11/28/2012:文章和代码初始版本。

    3.8K20

    visual C++ 项目和解决方案区别

    程序通常由一个或多个包含用户代码源文件,可能还要加上包含其它辅助数据文件组成。...例如,用于企业经营分布式订单录入系统可能由若干个不同程序组成,而各个程序是作为同一个解决方案项目开发,因此,解决方案就是存储与一个或多个项目有关所有信息文件夹,这样就有一个或多个项目文件夹是解决方案文件夹子文件夹...扩展名为.suo文件,其中记录着应用于该解决方案用户选项。 扩展名为.sdf文件,记录着与解决方案Intellisense有关数据。...但关闭此选项以后也会有很多不便,例如写程序时智能提示没有了。 .sln文件和.suo文件为MFC自动生成解决方案文件,它包含当前解决方案工程信息,存储解决方案设置。...因为C++没有提供GUI内置支持,如果要用C++创建一个窗口,我们需要使用系统API或者使用封装了系统API一些库,前者如Win32系统API后者如MFC、wxWidgets等。

    1.4K30

    c++DLL编程详解

    在仓库发展史上经历了“库-静态链接库-动态链接库”时代。 静态链接库与动态链接库都是共享代码方式,如果采用静态链接库,则无论你愿不愿意,lib中指令都被直接包含在最终生成EXE文件中了。...(2)动态链接库随处可见   我们在Windows目录下system32文件夹中会看到kernel32.dll、user32.dll和gdi32.dll,windows大多数API都包含在这些DLL...(3)VC动态链接库分类   Visual C++支持三种DLL,它们分别是Non-MFC DLL(非MFC动态库)、MFC Regular DLL(MFC规则DLL)、MFC Extension DLL...非MFC动态库:不采用MFC类库结构,其导出函数为标准C接口,能被非MFCMFC编写应用程序所调用; MFC规则DLL :包含一个继承自CWinApp类,但其消息循环 MFC扩展DLL:采用MFC...程序员在建立一个DLL文件时,连接器会自动为其生成一个对应.lib文件,该文件包含了DLL 导出函数符号名及序号(并不含有实际代码)。在应用程序里,.lib文件将作为DLL替代文件参与编译。

    2.3K60

    C++基础语法梳理:Windows 动态链接库

    得到 3、16 位系统目录,即 Windows 目录中 System 子目录 4、Windows 目录,可以通过 GetWindowsDirectory 得到 5、进程的当前目录 6、PATH 环境变量中所列出目录...HMODULE hInstDll, PCSTR pszSymbolName // 只能接受 ANSI 字符串,不能是 Unicode ); 复制代码 DumpBin.exe 查看 DLL 信息 在 VS 开发人员命令提示符...一个程序 I/O 指代程序与外界交互,包括文件、管程、网络、命令行、信号等。更广义地讲,I/O 指代操作系统理解为 “文件” 事物。...C 语言运行库(CRT) 大致包含如下功能: 启动与退出:包括入口函数及入口函数所依赖其他函数等。 标准函数:有 C 语言标准规定C语言标准库所拥有的函数实现。...(limits.h & float.h) 变长参数(stdarg.h) 非局部跳转(setjmp.h) 今天分享就到这里了,大家要好好学C++哟~ 写在最后:对于准备学习C/C++编程小伙伴,如果你想更好提升你编程核心能力

    1.1K00

    CC++程序员 面试经历总结

    (面试最后一个问题,居然卡住了,看来得好好看看操作系统了) 二、互联网面试 1、设计模式相关 (1)画出命令模式类图 (2)使用C++语言实现单例模式类 (3)使用C++语言实现工程模式类 2、数据结构和算法...4、MFC中CSocket类能不能用在多个线程中,请说明原因。 5、IOCP在服务器中应用,其特点和优势是什么,主要解决了什么问题。 6、存储过程是什么?在ADO和ODBC中存储过程如何使用?...消息队列克服了信号传递信息少、管道只能承载格式字节流以及缓冲区大小受限等缺点。 # 信号 ( sinal ) : 信号是一种比较复杂通信方式,用于通知接收进程某个事件已经发生。...pFun被定义为一个指向参数列表为in,int*,返回值为int函数指针,这种类型即函数指针可以用于定义一种指针类型,指向某种系列类型函数,通常用于回调函数。 2、以下C++代码段会输出什么?...六、总结 这段时间好好看看《高质量C++编程-林锐.PDF》这本书,以及数据结构、操作系统、MFC相关东西。

    2.3K31

    为.NET应用添加截图功能

    本文介绍了 .NET 实现截图功能思路和过程,如果你仅想了解最后解决方案,可以直接查看文章末尾。...截图软件除了我们经常用聊天工具和系统自带 Win + Ctrl + S外,我用起来感觉最好还是 C++开源软件 flameshot[1] ,功能非常强大。...以上只是针对单个显示器情况,若有多个显示器,则需要增加鼠标所在显示器逻辑。 虽然听起来不难,但代码实现起来还是有许多要注意细节。...首先 SendKeys 就不支持发送 Windows 徽标按键,我们需要通过 WinAPI keybd_event 来替代实现,然后还要获取到截图结束事件。...,我们可以自行启动截图软件,启动截图软件读取剪贴板Clipboard.GetImage() 一套结束,无缝感,堪称完美: Process snippingToolProcess = new Process

    91120

    QT Creator 快速入门教程 读书笔记(一)

    Qt 是应用程序开发一站式解决方案!Qt 虽然庞大,封装较深,但它速度并不慢,虽不及MFC,但比Java、C#要快。Qt 程序最终会编译成本地代码,而不是依托虚拟机。...Linux 也是嵌入式主力军,广泛应用于消费类电子、工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备、仪器仪表等相关行业,这些地方都有 Qt 影子。...提示:在 Windows 下,GUI 解决方案比较多,基于C++有 Qt、MFC、WTL、wxWidgets、DirectUI、Htmlayout,基于C#有 WinForm、WPF,基于Java有...跨平台:如果你程序需要运行在多个平台下,同时又希望降低开发成本,Qt 几乎是必备。...总起来说,Qt 主要用于桌面程序开发和嵌入式开发。

    4.4K60

    【操作系统】多线程之线程同步

    其线程ID用于标识系统中哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象次数。 创建互斥对象 :调用CreateMutex,调用成功,该函数返回所创建互斥对象句柄。...函数,用命令启动 int main(int argc,char* argv[]) { //初始化套接字库 WORD wVersion; WSADATA wsaData;...; 用于指明改时间处于已通知状态还是未通知状态布尔值。...如果是在MFC中使用的话,可以在类构造函数initxxx中调用InitializeCriticalSection函数,在该类析构函数中调用DeleteCriticalSection函数,在所需要保护代码前调通用...B如果访问关键代码段时,使用了多个临界区对象,就要注意防止线程死锁发生。 另外,如果需要在多个进程间各个线程间实现同步的话,可以使用互斥对象和事件对象或者信号量。

    56030

    MFC拓展库】上海道宁与BCGSOFT合作为您带来专业Micrisoft Windows开发业务组件

    库拥有500多个经过全面设计测试和充分记录MFC扩展类其组件可以轻松地集成到应用程序中并节省数百个开发和调试时间一、开发商介绍BCGSoft Ltd.成立于1998年,是一家专门为Microsoft...它不仅仅是一个新控件 - 它是一种新用户界面理念。功能区控件将传统工具栏和菜单替换为选项卡式组(类别)。每个选项卡在逻辑上分为面板,每个面板可能包含各种控件和命令按钮。...编辑器库适用于大量应用程序 - 从简单聊天客户端到复杂开发工具。主要产品功能01、语法高亮支持BCGPEdit支持两个级别的高度可定制语法突出显示。...您可以覆盖这些功能并将您想要任何逻辑合并到编辑控件中。02、语言定义 XML 模式编辑器允许使用我们强大而灵活XML方案定义机制定义任何所需编程语言。...BCGSuite 包括这些组件以及许多其他专业设计 GUI 控件。BCGSuite库有100多个经过彻底设计、测试和完整记录MFC扩展类。

    5.6K20

    奇技淫巧技术-注册表操作

    .reg文件使用以及操作 一丶Reg文件 首先这里不讲Winapi等一系列操作注册表方式,只说一下 reg文件操作方式 1.reg文件导入 reg文件是可以双击进行导入....也可以使用CMD 命令进行导入 如下: ? 如果要导入 就用 Reg Import reg import xxx.reg 具体可以查看cmd命令 2.reg文件导出 ?...主要是 注意 /y 是可以不用提示. 3.regedit导入方式 另外一种方式是使用 regedit导入 regedit /s xxx.reg 使用/s 选项 注意.reg文件. reg有人说后面有多出...4个空格.会导致导入失败或者成功 这个没有尝试. 4.总结 以上所有方法.均可以使用 C++ 实现, 假设你构造好一个.reg,直接使用 普通权限就可以导入 然后你懂....二丶C++ 代码导入reg文件黑屏问题 C++ 如果使用 system("reg import xxx.reg") 使用如上代码,会出现一个一闪而过黑框,原因是使用了system这个函数,我们只需要改为如下即可

    44230

    初学者下载使用Python遇到问题看它

    下载安装成功后,如果用命令提示符输入python出现下面请性: ?...再一次打开命令提示符,输入python就成功了。 ?  如果在安装好之后用命令提示符输入python。出现下面这张情况: ? 原因是因为Windows7 没有安装Serve peck1。 ...解决方案就是:安装Service Pack1升级包!打开电脑中控制面板\系统和安全\Windows Update,在这里更新!...目录下 2、安装完后提示api-ms-win-crt-runtimel1-1-0.dll 丢失 api-ms-win-crt-runtime就是MFC运行时环境库,python在windows上编译也是用微软...visual studio C++编译,底层也会用到微软提供C++库和runtime库,安装Visual C++ Redistributable for Visual Studio 2015 组件即可解决此问题

    1.1K30
    领券