首页 > 代码库 > VC++中调用cmd的集中方式
VC++中调用cmd的集中方式
1. system方法:
原型:
[cpp] view plain copy
- int __cdecl system(const char *);
例如:
[cpp] view plain copy
- system("ipconfig");
2. WinExec方法:
相比于system方法,WinExec方法多了一个窗口参数:
原型:
[cpp] view plain copy
- UINT WinExec(
- LPCSTR lpCmdLine,
- UINT uCmdShow
- );
例如:
WinExec("ipconfig", SW_SHOW);
参数可以是:SW_SHOW,,SW_SHOWMAXIMIZED,SW_SHOWMINIMIZED等等,总体用法是差不多的。
3. ShellExecute方法:
这个方法主要用于open,edit,find等方法的操作:
原型:
[cpp] view plain copy
- HINSTANCE ShellExecute(
- HWND hwnd,
- LPCTSTR lpOperation,
- LPCTSTR lpFile,
- LPCTSTR lpParameters,
- LPCTSTR lpDirectory,
- INT nShowCmd
- );
例如:
[cpp] view plain copy
- ShellExecute(NULL,"open","abc.xls",NULL,NULL,SW_HIDE);//打开默认路径的abc.xls文件
4.可回显的调用方法:
这个方法步骤比较复杂,是通过创建一个新进程来模拟cmd命令行,将写命令行和回显通过管道的方式呈现。
例如:
[cpp] view plain copy
- 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的集中方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。