VC中调用cmd命令四种方式.doc
文本预览下载声明
1. system方法:
原型:
HYPERLINK /admin/article/article_add.php \o view plain view plain
int?__cdecl?system(const?char?*);??
例如:
HYPERLINK /admin/article/article_add.php \o view plain view plain
system(ipconfig);??
2. WinExec方法:
相比于system方法,WinExec方法多了一个窗口参数:
原型:
HYPERLINK /admin/article/article_add.php \o view plain view plain
UINT?WinExec(??
??LPCSTR?lpCmdLine,??
??UINT?uCmdShow??
);??
例如:
WinExec(ipconfig, SW_SHOW);
参数可以是:SW_SHOW,,SW_SHOWMAXIMIZED,SW_SHOWMINIMIZED等等,总体用法是差不多的。
3. ShellExecute方法:
这个方法主要用于open,edit,find等方法的操作:
原型:
HYPERLINK /admin/article/article_add.php \o view plain view plain
HINSTANCE?ShellExecute(????????
????HWND?hwnd,??
????LPCTSTR?lpOperation,??
????LPCTSTR?lpFile,??
????LPCTSTR?lpParameters,??
????LPCTSTR?lpDirectory,??
????INT?nShowCmd??
);??
例如:
HYPERLINK /admin/article/article_add.php \o view plain view plain
ShellExecute(NULL,open,abc.xls,NULL,NULL,SW_HIDE);//打开默认路径的abc.xls文件??
4.可回显的调用方法:
这个方法步骤比较复杂,是通过创建一个新进程来模拟cmd命令行,将写命令行和回显通过管道的方式呈现。例如:
HYPERLINK /admin/article/article_add.php \o view plain view plain
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,NUL
显示全部