1. system方法:

原型:

  1. int __cdecl system(const char *);

例如:

  1. system("ipconfig");

2. WinExec方法:

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

原型:

  1. UINT WinExec(
  2. LPCSTR lpCmdLine,
  3. UINT uCmdShow
  4. );

例如:

WinExec("ipconfig", SW_SHOW);

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

3. ShellExecute方法:

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

原型:

  1. HINSTANCE ShellExecute(
  2. HWND hwnd,
  3. LPCTSTR lpOperation,
  4. LPCTSTR lpFile,
  5. LPCTSTR lpParameters,
  6. LPCTSTR lpDirectory,
  7. INT nShowCmd
  8. );

例如:

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

4.可回显的调用方法:

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

  1. void CTestMFCDlg::OnOK()
  2. {
  3. // TODO: Add extra validation here
  4. SECURITY_ATTRIBUTES sa;
  5. HANDLE hRead,hWrite;
  6. sa.nLength = sizeof(SECURITY_ATTRIBUTES);
  7. sa.lpSecurityDescriptor = NULL;
  8. sa.bInheritHandle = TRUE;
  9. if(!CreatePipe(&hRead,&hWrite,&sa,0))
  10. {
  11. MessageBox("CreatePipe Failed");
  12. return;
  13. }
  14. STARTUPINFO si;
  15. PROCESS_INFORMATION pi;
  16. ZeroMemory(&si,sizeof(STARTUPINFO));
  17. si.cb = sizeof(STARTUPINFO);
  18. GetStartupInfo(&si);
  19. si.hStdError = hWrite;
  20. si.hStdOutput = hWrite;
  21. si.wShowWindow = SW_HIDE;
  22. si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
  23. char cmdline[200];
  24. CString tmp,stredit2;
  25. GetDlgItemText(IDC_EDIT_CMD,stredit2);
  26. tmp.Format("cmd /C %s",stredit2);
  27. sprintf(cmdline,"%s",tmp);
  28. if(!CreateProcess(NULL,cmdline,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
  29. {
  30. MessageBox("CreateProcess failed!");
  31. return;
  32. }
  33. CloseHandle(hWrite);
  34. char buffer[4096] = {0};
  35. CString strOutput;
  36. DWORD bytesRead;
  37. while(1)
  38. {
  39. if(NULL == ReadFile(hRead,buffer,4095,&bytesRead,NULL))
  40. {
  41. break;
  42. }
  43. strOutput += buffer;
  44. SetDlgItemText(IDC_EDIT_TEXT,strOutput);
  45. UpdateWindow();
  46. Sleep(1000);
  47. }
  48. CloseHandle(hRead);
  49. }

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

VC++中调用cmd的集中方式的更多相关文章

  1. [转]VC中调用外部exe程序方式

    本文转自:http://blog.sina.com.cn/s/blog_486285690100ljwu.html 目前知道三种方式:WinExec,ShellExecute ,CreateProce ...

  2. VC中调用COM组件的方法(转载)

    原文参考:http://hi.baidu.com/mingyueye/item/53ebecd44da76917d80e4449 总结一下在VC中调用COM组件的方法 准备及条件: COM服务器为进程 ...

  3. vc中调用Com组件的方法详解

    vc中调用Com组件的方法详解 转载自:网络,来源未知,如有知晓者请告知我.需求:1.创建myCom.dll,该COM只有一个组件,两个接口:   IGetRes--方法Hello(),   IGet ...

  4. [X264] MinGW编译x264,VC中调用libx264.dll-------------<参考转>

    1. 下载并按照MinGW,最好就缺省按照    http://sourceforge.net/projects/ ... ler/mingw-get-inst/    把C:\MinGW\bin添加 ...

  5. python中调用cmd

    1. 使用os.system("cmd") 这是最简单的一种方法,特点是执行的时候程序会打出cmd在linux上执行的信息.使用前需要import os. os.system(&q ...

  6. Python中调用其他程序的方式

    前言 在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程, 可以使用win32 ...

  7. [转]vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess

    三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,Cr ...

  8. vc 中调用COM组件的方法

    需求:1.创建myCom.dll,该COM只有一个组件,两个接口:   IGetRes--方法Hello(),   IGetResEx--方法HelloEx() 2.在工程中导入组件或类型库  #im ...

  9. vc中调用Com组件的所有方法详解

    首先,对于Com组件的入门学习,可以看一下<Windows程序设计技术基础——MFC与.NET> 任哲编著的21世纪重点大学规划教材那本书,适合入门(虽然不一定会使用),了解些基础原理. ...

随机推荐

  1. Linq to Sql语法及实例大全

    LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的 ,而判断条件就是它后面所接的 ...

  2. shell介绍

    shell介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一:学好shell的3个基本条件: 1.vi/vim编辑器的熟练使用,ssh终端及".vimrc" ...

  3. wxPython学习笔记(初识)

    今天正式开始学习wxPython,基于对类的不熟悉,理解有点生硬,但还是做了些笔记. 1.是什么组成了一个wxpython程序? 一个wxpython程序必须有一个application(wx.App ...

  4. Android Studio 2.1.x 关联SDK API Source

    问题: 看图=>,当在android studio里ctrl+鼠标左键查看例如: TextUtils.isEmpty(content);这段代码的isEmpty方法的实现的时候经常就跑到如图所示 ...

  5. 安装redis,含安装步骤和安装中出现的详细错误分析

    1.wget http://download.redis.io/releases/redis-2.8.13.tar.gz 2.解压文件 tar -zxvf redis-2.8.13.tar.gz 3. ...

  6. Java TCP服务端向客户端发送图片

    /** * 1.创建TCP服务端,TCP客户端 * 2.服务端等待客户端连接,客户端连接后,服务端向客户端写入图片 * 3.客户端收到后进行文件保存 * @author Administrator * ...

  7. JSP具体篇——out

    out对象 out对象用于在web浏览器上输出信息,而且管理应用server上的输出缓冲区.在使用out对象输出数据时.能够对数据缓冲区进行操作.及时清除缓冲区中残留的数据.为其它输出让出缓冲空间. ...

  8. [Falcor] Intro to JSON Graph

    JSON is a very commonly used data interchange format. Unfortunately while most application domain mo ...

  9. VC2010对Excel的操作

    1. 创建新的C++工程 创建基于对话框的MFC程序 2. 添加库.添加Excel类库 在工程名上右键,选择“添加”—“类”(或者点击菜单栏的“项目”->“添加类”),选择“TypeLib中的M ...

  10. 对相同id的input框的循环判断

    $("input[id=sl]").each(function(){ alert(10); });