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. js跨域问题新方案

    只要创建一个空图片. js代码: var data = "http://localhost:8080/test?id="+id+"&content="+ ...

  2. Python标准库:内置函数bytearray([source[, encoding[, errors]]])

    返回一个新字节数组.这个数组里的元素是可变的.而且每一个元素的值范围: 0 <= x < 256.能够通过"字节与字节数组操作"章节来查看相关字节数组的内容.以下说明一 ...

  3. [RxJS] Creation operators: from, fromArray, fromPromise

    The of() operator essentially converted a list of arguments to an Observable. Since arrays are often ...

  4. 外键约束列并没有导致大量建筑指数library cache pin/library cache lock

    外键约束列并没有导致大量建筑指数library cache pin/library cache lock 清除一个100大数据表超过一百万线,发现已经运行了几个小时: delete B001.T_B1 ...

  5. Gradle 用法总结

    用过android studio的对gradle应该都不陌生了,gradle文件的基本配置大同小异,略做了解使用应该是没什么问题了.但是深入细致的了解一下对于理解项目还是很有帮助的,尤其是遇到一些配置 ...

  6. Adding Swap Files

    Adding Swap Files If you do not have free disk space to create a swap partition and you do need to a ...

  7. 简单dp ---HDU3485 Count 101

    题目大意:让求长度为n的0 和 1 构成的串中不包含101子串的个数有多少. 这个题当时想了好久,以为是一个规律题,一直在推规律,最后还是wa了,上网一看原来是dp问题, 不过确实递推式挺巧妙的. 递 ...

  8. 4、第4次课 CSS代码第三节课20150923

    1.列表li样式及取值意义 list-style-type : disc | circle | square | decimal | lower-roman | upper-roman | lower ...

  9. window.location.href 和self.location的区别

    你从字面上就可以理解到 window 指的是当前窗口 而 self 指的是自己 在HTML 中 由于页面可以镶嵌页面 所以这2个就有了 区别 比如说 我有个页面A.HTML 里面嵌套了一个B.HTML ...

  10. Design Pattern ——Factory Method&Abstract Factory

    今天开始复习设计模式.设计模式相关的资料有很多,概念性的东西就画个图就可以了.把关注点放在例子上,设计模式还是要使用中才有感受. 从Factory Method&Abstract Factor ...