VC中调用cmd命令的四种方式
2011-11-06 15:21
393 查看
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编辑框中的实现。
相关文章推荐
- python调用cmd命令的几种方式和区别
- VC调用CMD命令通过控制台管道获取输出结果
- Java中调用windows cmd命令的两种方式
- C/C++ 通过管道的方式调用Windows ping命令 且 不显示黑窗口(cmd 窗口)
- VC++中调用cmd的集中方式
- VC中调用CMD命令并获取调用结果
- 关闭系统进程,以及如何调用cmd并执行命令
- java调用CMD命令
- 系统调用中与被调用的命令交互方式
- Java 调用cmd.exe命令
- ADO方式,VC调用Execute执行INSERT INTO插入变量SQL语句的写法
- .net 调用命令提示行(cmd.exe)
- JAVA调用cmd命令将shp数据存入postgis
- Perl调用外部命令的方式和区别
- C#调用cmd里的各种命令
- Asp.net C#下实现运行cmd调用命令的代码实例
- python 调用shell 命令 方式
- Java 执行 多行 cmd 命令 创建 快捷方式
- 四种读写文件的方式:系统调用(open/read/write),C语言(fopen,fgets, fputs),C++(ifstream, ofstream getline,)泛型算法
- GroupBy(..)的四种声明方式的理解及调用