`

c/c++代码中执行cmd命令

 
阅读更多
转自
http://blog.csdn.net/slixinxin/article/details/51455335

代码中执行cmd命令有多重方法:

第一种:可以直接打开对应文件(文件夹),但不能定位到相应文件
::ShellExecute(NULL, _T("open"), "d:\CodeSpace\FileRecv\mcisendstring.txt", NULL, NULL, SW_SHOWNORMAL);


第二种:可以再打开文件夹的同时定位到相应的文件
::ShellExecute(NULL, L"open", L"explorer.exe", "/select,d:\CodeSpace\FileRecv\mcisendstring.txt", NULL, SW_SHOWNORMAL);


对于前两种的cmd执行方式,一般是用于打开文件或者链接之类的,另外的一些命令需要用到下面的方法:

第三种:用于直接打开一个可执行文件,并且可以等待其执行完成,适用于单线程

do
{
    DWORD lResult;
    PROCESS_INFORMATION piProcInfo; 
    STARTUPINFO siStartInfo = {sizeof(STARTUPINFO)};

    //PROCESS_INFORMATION pi;
    //ZeroMemory(&si,sizeof(STARTUPINFO));
    //si.cb = sizeof(STARTUPINFO); 
    //GetStartupInfo(&si); 
    //si.wShowWindow = SW_HIDE; //隐藏窗口 
    //si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;

    if(!CreateProcess(NULL, "uclient.exe /c", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo))
    break;


    WaitForSingleObject(piProcInfo.hProcess, INFINITE);
    if(GetExitCodeProcess(piProcInfo.hProcess, &lResult) && lResult != -1 && lResult>0)
    {
        DebugInfoA("客户端有 %d 个文件可升级最新版", lResult);
        int nresult = MessageBox(NULL, "有新版本可以升级,是否立即升级?", "客户端版本升级", MB_OKCANCEL);
        if(IDOK == nresult)
        {
            CreateProcess(NULL, "uclient.exe /u", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo);
            return 0;
         }
    }
}while(FALSE);


第四种:用于调用一个外部可执行文件执行相应命令,并且可以等待其执行完成,适用于单线程,其他部分代码同上一种
    if(!CreateProcess(NULL, "7za.exe a \"d:\CodeSpace\Face.7z\" -o \"d:\CodeSpace\Face/*\"", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo));
    if(!CreateProcess(NULL, "7za.exe x \"d:\CodeSpace\Face.7z\" -o \"d:\CodeSpace\Face\"", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo));


第五中:system 函数,可以直接执行输入到cmd里面的命令,但是代码中执行过程中会出现黑屏的闪烁,无法隐藏

system(“copy \"C:\Users\s810.png\" \"d:\CodeSpace\719950C424FC405CA6139EDFB99F4E08.png\"”);


第六种:WinExec 函数(可以直接执行cmd命令以及调用cmd执行命令,并且可以隐藏窗口)
WinExec("cmd.exe /c copy \"C:\Users\s810.png\" \"d:\CodeSpace\s893CD.png\"", SW_HIDE);



相关用法:
ex1: WinExec("Notepad.exe c:\\autoexec.bat",SW_SHOW); 执行 notepad.exe 并正常显示器窗口
ex2: WinExec("Notepad.exe",SW_SHOWMINIMIZED); 执行 notepad.exe 但最小化其窗口
ex3: WinExec("Command.com /c dir c:\\",SW_SHOW); 执行 dir C:\ ,完成后关闭 MSDOS 窗口  
ex4: WinExec("Command.com /k dir c:\\",SW_SHOW); 执行 dir C:\ ,完成后不关闭 MSDOS 窗口

分享到:
评论

相关推荐

    C_c++代码执行cmd命令.txt

    文档提供了六种在C++代码中运行cmd命令的方法。并以具体的例子加以说明。

    【C/C++课设】 学生成绩管理系统

    【系统说明】:帮朋友写的一个C/C++课设,基本要求点: 1.用bin文件模拟数据库存储,用txt实时显示数据库内容; 2.程序可复用,退出后重新登陆之前的操作数据保留; 3.支持带参数的命令行; 4.成绩数据的基本增...

    c语言c++项目源代码_c语言实现如果cmd中的ping.rar

    **C语言实现的CMD中PING.RAR功能资源介绍** 本文将为您介绍一个使用C语言编写的程序,该程序能够在CMD(命令提示符)环境下实现类似PING的功能,但特别针对RAR文件。此程序不仅能够测试网络连接,还能检查RAR文件的...

    C语言 Socket示例-模拟远程CMD(客户端向服务器发送命令,服务端执行该命令).rar

    用Microsoft visual c++ 6.0开发的socket-模拟远程CMD(客户端向服务器发送命令,服务端执行该命令),里面包含server和client的代码以及开发文档,详细介绍了整个项目的创建和运行过程。

    使用C++语言实现基于JVMTI机制的 JAVA 代码 加密保护工具

    打开windows命令行(运行=>cmd=>回车),在命令行中 进入 EncryptJar目录 2.执行 java -jar encrypt.jar 3.输入h,然后回车,可以看到帮助菜单 4.输入3,然后按回车键,进入加入jar文件功能 5.输入要加密的jar文件的...

    15天精通Python-Python总结-Python基础-pyhthon小代码.docx

    是解释性语言,执行源代码,提供丰富的库,支持多线,多进程,网络编程,可以支持C/C++的代码,可以测试C/C++和Python开发的单元产品,Python越来越多的成为开源测试自动化工具的首选语言 安装 安装:python2.7.6/...

    linux c++ 调用shell命令,保存执行结果 示例

    下面的代码用于在c++函数里面调用shell,并且执行命令,取回命令执行结果。 #include #include #include #include int main() { const int SIZE = 64; const int MAX_RESPONSE_SIZE = 65535; char charBuff[SIZE...

    linux C程序中获取shell脚本输出(如获取system命令输出)

    linux C程序中获取shell脚本输出(如获取system命令输出)

    实例教程1小时学会Python

    在这个足够简单的例子中也许看不出C/C++和Java实现的区别,但在一些更为复杂的场景,比如要将连通与否的信息记录到网络数据库.由于Linux和Windows的网络接口实现方式不同,你不得不写两个函数的版本.用Java就没有这样的...

    用C++实现一个命令行进度条的示例代码

    最近做遥感影像融合的GWPCA方法,在带宽比较大的时候速度太慢了,需要有个进度条指示一下,然后我去找进度条的库,发现github上面的C/C++的相应的库似乎没有能在VS下跑的,自己花了点时间写了一个。 效果 实现 大概...

    Win-UNIX_C_Makefile:准备用于简单CC ++项目的Makefile

    要检查一切是否正常,可以运行cmd.exe , gcc --version命令应该可以正常工作。 制造。 它包含在命名的编译器中。 出现为mingw32-make.exe 不要忘记在Path环境变量中包含编译器地址 这是为了什么? 目的是允许在...

    一个C写的银行家算法代码

    内容索引:VC/C++源码,算法相关,算法,银行家 C写的银行家算法代码实例,运行时先CMD打开命令提示符,然后将生成的EXE文件拖放至提示符窗口中,会看到程序已运行,可看到:1、新增作业,2、为作业申请资源,3、撤销...

    蝙蝠算法matlab程序代码-bhtsne:bhtsne

    蝙蝠算法matlab程序代码 该软件包包含t-SNE算法的Barnes-Hut实现。 该实现在中进行了描述。 安装 在Linux或OS X上,使用以下命令编译源: g++ sptree.cpp tsne.cpp tsne_main.cpp -o bh_tsne -O2 该可执行文件将被...

    word源码java-CTF:2018年2月15日至28日的CTF、C++STL等内容学习笔记

    VSCode是一个代码编译器,支持多种语言,编译运行单一文件不是很方便,可以通过插件Launcher开启CMD窗口,调用第三方程序执行一些命令,这里借用这个插件实现调用WSL编译运行单个文件 1.Windows调用WSL运行Linux程序...

    多线程代码

    一个多线程的cpp代码统计工具,在win10+vs2010上实现,可以在cmd窗口中输入类似“Codestatistics.exe c:”的命令运行,运行结果显示在控制上。工程分两个主要模块,多线程递归所以当前目录下的所有cpp文件,之后进行...

    vscode-cpp-snippets:CC ++ for VS Code的代码片段

    安装安装Visual Studio Code 0.10.1或更高版本启动VS代码从命令选项板Ctrl + Shift + P (Windows,Linux)或Cmd + Shift + P (OSX) 输入ext install或仅选择Install Extension 选择扩展名-Cpp代码段重新启动VS ...

    Kattis-Demos:带有单元测试的Kattis演示解决方案

    在Windows上,需要g ++编译器才能从命令提示符下编译和运行C和C ++代码 可以从下载适用于Windows的g ++编译器; 如以下说明所示,将其解压缩到C:\驱动器: : 编程语言 演示以以下几种语言提供 根据您的语言和操作...

    corejava基础重要知识点总结

    jre:当一个电脑上面安装jre之后 只能运行java代码 2:设置环境变量 (环境变量可以不设置 为了简化开发流程 提高开发效率) 给谁使用 作用 PATH: 操作系统 让操作系统更加快捷的找到一个文件/命令 PATH=C:\...

    matlab蓝色代码表示-knife:优雅的C++11语法糖,适用于使用Python,SQLite和Bash进行混合语言编程

    matlab蓝色代码表示刀:C ++ 11的混合语言编程 您刚刚找到了刀。 Knife是一个简单,优雅,非常方便的C ++ 11 Lib,用于使用和进行混合语言编程。 开发它的重点是实现简单自然的混合语言编程方法。 直接享受这些语言...

    网管教程 从入门到精通软件篇.txt

    CPP:C++代码文件 CPR:Corel提供说明书文件 CPT:Corel 照片-绘画图像 CST:Macromedia Director Cast文件 CUR:Windows光标文件 D DBF:dBASE文件,一种由Ashton-Tate创建的格式,可以被ACT!、Lipper、...

Global site tag (gtag.js) - Google Analytics