VC++中调用cmd的集中方式
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 here
- SECURITY_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的集中方式的更多相关文章
- [转]VC中调用外部exe程序方式
本文转自:http://blog.sina.com.cn/s/blog_486285690100ljwu.html 目前知道三种方式:WinExec,ShellExecute ,CreateProce ...
- VC中调用COM组件的方法(转载)
原文参考:http://hi.baidu.com/mingyueye/item/53ebecd44da76917d80e4449 总结一下在VC中调用COM组件的方法 准备及条件: COM服务器为进程 ...
- vc中调用Com组件的方法详解
vc中调用Com组件的方法详解 转载自:网络,来源未知,如有知晓者请告知我.需求:1.创建myCom.dll,该COM只有一个组件,两个接口: IGetRes--方法Hello(), IGet ...
- [X264] MinGW编译x264,VC中调用libx264.dll-------------<参考转>
1. 下载并按照MinGW,最好就缺省按照 http://sourceforge.net/projects/ ... ler/mingw-get-inst/ 把C:\MinGW\bin添加 ...
- python中调用cmd
1. 使用os.system("cmd") 这是最简单的一种方法,特点是执行的时候程序会打出cmd在linux上执行的信息.使用前需要import os. os.system(&q ...
- Python中调用其他程序的方式
前言 在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程, 可以使用win32 ...
- [转]vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,Cr ...
- vc 中调用COM组件的方法
需求:1.创建myCom.dll,该COM只有一个组件,两个接口: IGetRes--方法Hello(), IGetResEx--方法HelloEx() 2.在工程中导入组件或类型库 #im ...
- vc中调用Com组件的所有方法详解
首先,对于Com组件的入门学习,可以看一下<Windows程序设计技术基础——MFC与.NET> 任哲编著的21世纪重点大学规划教材那本书,适合入门(虽然不一定会使用),了解些基础原理. ...
随机推荐
- JavaScript 阻止默认时间和冒泡时间
<!DOCTYPE HTML><html> <head> <title>event cancel</title> </head> ...
- 032数值的整数次方(keep it up)
剑指offer中题目:http://ac.jobdu.com/problem.php? pid=1514 题目描写叙述: 给定一个double类型的浮点数base和int类型的整数exponent. ...
- 提高你的Java代码质量吧:让我们疑惑的字符串拼接方式的选择
一.分析 对于一个字符串进行拼接有三种方法:加号.concat方法.及StringBuiler或StringBuffer. 1."+"方法拼接字符串 str += " ...
- Difference between Tomcat's extraResourcePaths and aliases to access an external directory--转
Question: Simple question: In Tomcat7, what's the difference between using extraResourcePaths and al ...
- 安装android studio 出现的路径问题 tools.jar' seems to be not in Android Studio classpath
尝试一下android studio ,谁知出现路径问题 'tools.jar' seems to be not in Android Studio classpath. Please ensure ...
- 选课 树形dp+路径输出
#include<iostream> #include<cstdio> #include<cstring> #define maxn 2010 using name ...
- bzoj 3043 (差分序列运用)
维护差分序列 显然要使差分序列的后n-1位为0 对于原来的区间操作 只需要单点修改或者两个点修改 就转化成了 对于差分序列但以一个数+ 或 - 或者一个+1同时一个- ans1=max(sum1,su ...
- css控制背景图片在浏览器中居中,下拉浏览器的时候背景图一直不变
如 http://www.gm.com/ css样式如下 ;;} #con{ position:absolute; ; ; height:100%; width:100%; background-im ...
- Rolling cURL: PHP并发最佳实践
Rolling cURL: PHP并发最佳实践 在实际项目或者自己编写小工具(比如新闻聚合,商品价格监控,比价)的过程中, 通常需要从第3方网站或者API接口获取数据, 在需要处理1个URL队列时, ...
- shell中if做比较
比较两个字符串是否相等的办法是: if [ "$test"x = "test"x ]; then 这里的关键有几点: 1 使用单个等号 2 注意到等号两边各有一 ...