cc++代码中执⾏cmd命令
转⾃
[url]blog.csdn/slixinxin/article/details/51455335[/url]
[b][size=medium]代码中执⾏cmd命令有多重⽅法:[/size][/b]
[b][color=red]第⼀种:可以直接打开对应⽂件(⽂件夹),但不能定位到相应⽂件[/color][/b]
::ShellExecute(NULL, _T("open"), "d:\CodeSpace\", NULL, NULL, SW_SHOWNORMAL);
[color=red][b]第⼆种:可以再打开⽂件夹的同时定位到相应的⽂件[/b][/color]
::ShellExecute(NULL, L"open", ", "/select,d:\CodeSpace\", NULL, SW_SHOWNORMAL);
对于前两种的cmd执⾏⽅式,⼀般是⽤于打开⽂件或者链接之类的,另外的⼀些命令需要⽤到下⾯的⽅法:
[color=red][b]第三种:⽤于直接打开⼀个可执⾏⽂件,并且可以等待其执⾏完成,适⽤于单线程[/b][/color]
do
{
DWORD lResult;createprocessa
PROCESS_INFORMATION piProcInfo;
STARTUPINFO siStartInfo = {sizeof(STARTUPINFO)};
//PROCESS_INFORMATION pi;
//ZeroMemory(&si,sizeof(STARTUPINFO));
//si.cb = sizeof(STARTUPINFO);
//GetStartupInfo(&si);
//si.wShowWindow = SW_HIDE; //隐藏窗⼝
//si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if(!CreateProcess(NULL, " /c", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo))
break;
WaitForSingleObject(piProcInfo.hProcess, INFINITE);
if(GetExitCodeProcess(piProcInfo.hProcess, &lResult) && lResult != -1 && lResult>0)
{
DebugInfoA("客户端有 %d 个⽂件可升级最新版", lResult);
int nresult = MessageBox(NULL, "有新版本可以升级,是否⽴即升级?", "客户端版本升级", MB_OKCANCEL);
if(IDOK == nresult)
{
CreateProcess(NULL, " /u", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo);
return 0;
}
}
}while(FALSE);
[color=red][b]第四种:⽤于调⽤⼀个外部可执⾏⽂件执⾏相应命令,并且可以等待其执⾏完成,适⽤于单线程,其他部分代码同上⼀种
[/b][/color]
if(!CreateProcess(NULL, " a \"d:\CodeSpace\Face.7z\" -o \"d:\CodeSpace\Face/*\"", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piP
if(!CreateProcess(NULL, " x \"d:\CodeSpace\Face.7z\" -o \"d:\CodeSpace\Face\"", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo)
[color=red][b]第五中:system 函数,可以直接执⾏输⼊到cmd⾥⾯的命令,但是代码中执⾏过程中会出现⿊屏的闪烁,⽆法隐藏
[/b][/color]
system(“copy \"C:\Users\s810.png\" \"d:\CodeSpace\719950C424FC405CA6139EDFB99F4E08.png\"”);
[color=red][b]第六种:WinExec 函数(可以直接执⾏cmd命令以及调⽤cmd执⾏命令,并且可以隐藏窗⼝)[/b][/color]
WinExec(" /c copy \"C:\Users\s810.png\" \"d:\CodeSpace\s893CD.png\"", SW_HIDE);
相关⽤法:
ex1: WinExec(" c:\\autoexec.bat",SW_SHOW); 执⾏ 并正常显⽰器窗⼝
ex2: WinExec("",SW_SHOWMINIMIZED); 执⾏ 但最⼩化其窗⼝
ex3: WinExec("Command /c dir c:\\",SW_SHOW); 执⾏ dir C:\ ,完成后关闭 MSDOS 窗⼝
ex4: WinExec("Command /k dir c:\\",SW_SHOW); 执⾏ dir C:\ ,完成后不关闭 MSDOS 窗⼝

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。