1. system方法:

原型:

int __cdecl system(const char *);

例如:

system("ipconfig");

2. WinExec方法:

相比于system方法,WinExec方法多了一个窗口参数:

原型:

UINT WinExec(LPCSTR lpCmdLine,UINT uCmdShow
);

例如:

WinExec("ipconfig", SW_SHOW);

参数可以是:SW_SHOW,,SW_SHOWMAXIMIZED,SW_SHOWMINIMIZED等等,总体用法是差不多的。

3. ShellExecute方法:

这个方法主要用于open,edit,find等方法的操作:

原型:

HINSTANCE ShellExecute(      HWND hwnd,LPCTSTR lpOperation,LPCTSTR lpFile,LPCTSTR lpParameters,LPCTSTR lpDirectory,INT nShowCmd
);

例如:

ShellExecute(NULL,"open","abc.xls",NULL,NULL,SW_HIDE);//打开默认路径的abc.xls文件

4.可回显的调用方法:

这个方法步骤比较复杂,是通过创建一个新进程来模拟cmd命令行,将写命令行和回显通过管道的方式呈现。
例如:

void CTestMFCDlg::OnOK()
{// TODO: Add extra validation hereSECURITY_ATTRIBUTES sa;HANDLE hRead,hWrite;sa.nLength = sizeof(SECURITY_ATTRIBUTES);sa.lpSecurityDescriptor = NULL;sa.bInheritHandle = TRUE;if(!CreatePipe(&hRead,&hWrite,&sa,0)){MessageBox("CreatePipe Failed");return;}STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory(&si,sizeof(STARTUPINFO));si.cb = sizeof(STARTUPINFO);GetStartupInfo(&si);si.hStdError = hWrite;si.hStdOutput = hWrite;si.wShowWindow = SW_HIDE;si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;char cmdline[200];CString tmp,stredit2;GetDlgItemText(IDC_EDIT_CMD,stredit2);tmp.Format("cmd /C %s",stredit2);sprintf(cmdline,"%s",tmp);if(!CreateProcess(NULL,cmdline,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)){MessageBox("CreateProcess failed!");return;}CloseHandle(hWrite);char buffer[4096] = {0};CString strOutput;DWORD bytesRead;while(1){if(NULL == ReadFile(hRead,buffer,4095,&bytesRead,NULL)){break;}strOutput += buffer;SetDlgItemText(IDC_EDIT_TEXT,strOutput);UpdateWindow();Sleep(1000);}CloseHandle(hRead);
}

以上是在一个MFC中点击OnOK按钮后,将IDC_EDIT_CMD编辑框中的命令执行,并将1秒内cmd命令的回显答应到IDC_EDIT_TEXT编辑框中的实现。

VC中调用cmd命令的四种方式相关推荐

  1. JavaScript中字符串连接/拼接的四种方式

    JavaScript中连接字符串的方式有4种,分别是使用加号运算符连接.使用${}配合反引号连接.使用concat()函数连接.使用join()函数连接. 1. 使用加号运算符 示例代码如下: let ...

  2. Java中数组转List的四种方式

    第一种方式(未必最佳):使用ArrayList.asList(strArray) 使用Arrays工具类Arrays.asList(strArray)方式,转换完成后,只能对List数组进行查改,不能 ...

  3. java 执行cmd 堵塞_java中调用cmd命令被阻塞无法返回和继续执行

    在项目中用到了数据库的备份和恢复功能,就通过java的Runtime.getRuntime().exec()来调用cmd或者linux命令来导出和导入.sql文件.但是在执行恢复时,程序一直被阻塞,没 ...

  4. android java调用_关于Android中Java调用外部命令的三种方式

    此所谓三种方式,只是个人认为.本人还是菜鸟初涉,所以有所错误,请指正. 个人认为,Java调用外部命令.无非三种情况: 一.是只执行命令,不考虑返回值. 二.是执行命令的同时,还需要得到返回值. 三. ...

  5. 在python代码中调用vba宏的四种方法

    在python代码中调用vba宏 工作以python为主体,但是遇到了一些word操作的需求(详见上一篇),这个需求用word自带的功能会很容易实现,于是就想着能不能用python调用宏来处理. 网上 ...

  6. Spring中配置Hibernate事务的四种方式

    2019独角兽企业重金招聘Python工程师标准>>> 为了保证数据的一致性,在编程的时候往往需要引入事务这个概念.事务有4个特性:原子性.一致性.隔离性.持久性. 事务的种类有两种 ...

  7. 【Matlab系列】MATLAB中显示输出数据的四种方式

    DATE: 2019-11-13 1.参考 MATLAB 显示输出数据的三种方式 Matlab之print,fprint,fscanf,disp函数 2.改变数据格式 当数据重复再命令行窗口时,整数以 ...

  8. JAVA中的arraylist集合_java中遍历ArrayList集合的四种方式

    详细内容 ArrayList遍历:取出ArrayList集合中的数据 方式一:for循环 方式二:增强for循环:foreach 方式三:Iterator:迭代器 方式四:ListIterator:双 ...

  9. java中遍历集合_java中遍历ArrayList集合的四种方式

    ArrayList遍历:取出ArrayList集合中的数据 方式一:for循环 方式二:增强for循环:foreach 方式三:Iterator:迭代器 方式四:ListIterator:双向迭代器 ...

最新文章

  1. Machine Learning | (11) 回归性能评估与欠拟合、过拟合
  2. Microsoft Dynamics CRM 2013 试用之系统篇 正式安装 Microsoft Dynamics CRM Server 2013
  3. Syntax error, annotations are only available if source level is 1.5 or greater.
  4. Django-请求与响应
  5. 3.2.7.1 替换细节
  6. requests爬取免费代理2
  7. [转载] Java获取嵌套的json串里的返回结果
  8. 【Alpha】Scrum Meeting 10
  9. SCORM的对手——LOM
  10. Python应用之批量打水印
  11. 删除桌面上出现无文件名图标的方法
  12. 主播直播时如何选择合适的内容?如何打造主播人设?
  13. aj1黑白反转价格_除了倒勾配色AJ1,更有反转配色WHITE MOCHA同步发售
  14. 电子技术——伪NMOS逻辑电路
  15. 学习初步练习基于c语言的socket编程
  16. Kafka启动失败异常-InconsistentClusterIdException
  17. Mac平台直播推流搭建
  18. A trip to InterSpeech2012 (Part II)
  19. window7属于计算机硬件吗,win7最低配置要求是什么?
  20. 本证方程的本征值 与 特征方程的特征值 的 区别 辨析

热门文章

  1. 【Python】使用pdfkit报错:OSError: wkhtmltopdf exited with non-zero code 1. error:
  2. c++中opencv对图片旋转镜像并调整尺寸显示
  3. Tuxera Disk Manager是什么软件,Tuxera Disk Manager怎么用
  4. Java安全编程需要考虑的问题
  5. 区块链读书笔记01-区块链基础
  6. Linux 多线程(附带线程池代码加注释)
  7. Bone Collector(01背包问题-两种写法)
  8. canvas使用硬件加速
  9. 如何设置交易滑点?精确到tick 测算期货冲击成本(附源码)
  10. mac电脑开机是出现安全启动