VC中调用cmd命令的四种方式.doc
1. system方法:
原型:
view plain
1. int __cdecl system(const char *);
例如:
view plain
1. system("ipconfig");
2. WinExec方法:
相比于system方法,WinExec方法多了一个窗口参数: 原型:
view plain
1. UINT WinExec(
2. LPCSTR lpCmdLine,
3. UINT uCmdShow
4. );
例如:
WinExec("ipconfig", SW_SHOW); 参数可以是:SW_SHOW,,SW_SHOWMAXIMIZED,SW_SHOWMINIMIZED等等,总体用
法是差不多的。
3. ShellExecute方法:
这个方法主要用于open,edit,find等方法的操作: 原型:
view plain
1. HINSTANCE ShellExecute(
2. HWND hwnd,
3. LPCTSTR lpOperation,
4. LPCTSTR lpFile,
5. LPCTSTR lpParameters,
6. LPCTSTR lpDirectory,
7. INT nShowCmd
8. );
例如:
view plain
1. ShellExecute(NULL,"open","abc.xls",NULL,NULL,SW_HIDE);//打开默
认路径的abc.xls文件
4.可回显的调用方法:
这个方法步骤比较复杂,是通过创建一个新进程来模拟cmd命令行,将写命令行和回显通过管道的方式呈现。
例如:
view plain
1. void CTestMFCDlg::OnOK()
2. {
3. // TODO: Add extra validation here
4. SECURITY_ATTRIBUTES sa;
5. HANDLE hRead,hWrite;
6.
7. sa.nLength = sizeof(SECURITY_ATTRIBUTES);
8. sa.lpSecurityDescriptor = NULL;
9. sa.bInheritHandle = TRUE;
10.
11. if(!CreatePipe(&hRead,&hWrite,&sa,0))
12. {
13. MessageBox("CreatePipe Failed");
14. return;
15. }
16.
17. STARTUPINFO si;
18. PROCESS_INFORMATION pi;
19.
20. ZeroMemory(&si,sizeof(STARTUPINFO));
21. si.cb = sizeof(STARTUPINFO);
22. GetStartupInfo(&si);
23. si.hStdError = hWrite;
24. si.hStdOutput = hWrite;
25. si.wShowWindow = SW_HIDE; 26. si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWIND
OW;
27.
28. char cmdline[200];
29. CString tmp,stredit2;
30. GetDlgItemText(IDC_EDIT_CMD,stredit2); 31. tmp.Format("cmd /C %s",stredit2); 32. sprintf(cmdline,"%s",tmp); 33.
34. if(!CreateProcess(NULL,cmdline,NULL,NULL,TRUE,NULL,NUL
L,NULL,&si,&pi))
35. {
36. MessageBox("CreateProcess failed!"); 37. return;
} 38.
39. CloseHandle(hWrite);
40.
char buffer[4096] = {0}; 41.
42. CString strOutput;
43. DWORD bytesRead;
44.
45. while(1)
46. {
47. if(NULL == ReadFile(hRead,buffer,4095,&bytesRead,N
ULL))
48. {
49. break;
50. }
51. strOutput += buffer;
52. SetDlgItemText(IDC_EDIT_TEXT,strOutput);
53. UpdateWindow();
54. Sleep(1000);
55. }
56. CloseHandle(hRead);
57. }
以上是在一个MFC中点击OnOK按钮后,将IDC_EDIT_CMD编辑框中的命令执行,
并将1秒内cmd命令的回显答应到IDC_EDIT_TEXT编辑框中的实现。
本文档为【VC中调用cmd命令的四种方式.doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。