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世纪重点大学规划教材那本书,适合入门(虽然不一定会使用),了解些基础原理. ...
随机推荐
- Android中的多媒体显示之图片缩放
一:图片OOM异常: 代码示例: public class MainActivity extends Activity { private ImageView iv_imageView; protec ...
- [转] JS nodeType返回类型
将HTML DOM中几个容易常用的属性做下记录: nodeName.nodeValue 以及 nodeType 包含有关于节点的信息. nodeName 属性含有某个节点的名称. 元素节点的 node ...
- RHEL7和RHEL6的主要变化
RHEL7和RHEL6的主要变化 RHEL7 RHEL6 文件系统 XFS EXT4 内核版本 3.10.x-x系列 2.6.x-x系列 内核名称 Maipo Santiago 发布时间 2014 ...
- java的练习
import java.awt.GridLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.s ...
- 不容错过的20段CSS代码
Web开发技术每年都在革新,浏览器已逐渐支持CSS3特性,并且网站设计师和前端开发者普遍采用这种新技术进行设计与开发.但仍然有一些开发者迷恋着一些CSS2代码. 分享20段非常专业的CSS2/CSS3 ...
- JS 实现 Tab标签切换功能
Tab标签切换 效果图: HTML部分: <div class="wrap"> <ul id="tag"> < ...
- Lesson 4: Know Your Tools
Lesson 4: Know Your Tools "差劲的人
- SpringMVC简单例子
http://www.cnblogs.com/wawlian/archive/2012/11/17/2775435.html
- UITableViewCell实现3D缩放动画
gif效果图: 代码部分: import UIKit class TableViewController: UITableViewController { override func viewDidL ...
- osg三维重建的两种方法剖析:三角面片(osgUtil::DelaunayTriangulator)和四角面片(osg::HeightField) (2)
// perform very basic sanity-check validation on a heightfield.bool validateHeightField(osg::HeightF ...