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. springMVC之本地化和国际化

    spring框架的大部分都支持国际化,就像springMVC一样.DispatcherServlet使你能够动态的通过客户端的本地语言进行配置.这是通过LocaleResolver完成的.   当一个 ...

  2. UIKit和Core Graphics绘图(一)——字符串,线条,矩形,渐变

    概述 CoreGraphics也称为Quartz 2D 是UIKit下的主要绘图系统,频繁的用于绘制自定义视图.Core Graphics是高度集成于UIView和其他UIKit部分的.Core Gr ...

  3. 使用jcrop进行头像剪切

    http://www.cnblogs.com/chenssy/archive/2013/05/18/3084985.html http://code.ciaoca.com/jquery/jcrop/ ...

  4. App发布AppStore【苹果开发者中心需要做的事】

    请准许我的这句抱怨,也说明发布app到AppStore理清这些东西的重要性:起初打包出现各种 ApplicationVerificationFailed,不是这里没有搞对就是那个证书没有搞对,整个人签 ...

  5. ios AFNetworking 有用篇

    在寻常开发中,af是个非常好用的东西.非常喜欢.可是网上的af找了好多都不太全面,不有用.所以我今天做了一个demo.有上传下载的. 比較有用.希望大家可以用到. 去我github下载demo git ...

  6. 修改登录linux之后显示的默认文件夹目录

    命令如下: ll -a vim .bash_profile 最后一行加上cd 需要显示的文件夹

  7. Sqlserver数据库日志太大如何快速删除

    sqlserver使用在windows系统中,如果文件超上百GB了,我们还直接删除不了,这个问题我以前的apache日志就碰到过,至今还没删除呢,那么Sqlserver数据库日志太大如何快速删除呢,有 ...

  8. \r \n有什么区别

    '\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格.通常用的Enter是两个加起来.下面转一篇文章. 回车和换行 今天,我总算搞清楚“回车”(carriage return)和“换行 ...

  9. MD5加密运算

    //MD5 对字符串的加密 -(void)demo1 { NSString *str = @"love"; //对字符串进行MD5加密 str = str.md5String; N ...

  10. 在iOS8下使用CLLocationManager定位服务需要系统授权

    最近在ios8.0使用CLLocationManager定位服务,发现老不能定位,查看设置菜单中的项也是处于未知状态.想起之前都有一个弹出框提示用户是否允许定位,这次一直没有出现了.原来ios8.0下 ...