調用CMD執行程序的各種方法


第一種:可以直接打開對應文件(文件夾),但不能定位到相應文件
::ShellExecute(NULL, _T("open"), "d:\CodeSpace\FileRecv\mcisendstring.txt", NULL, NULL, SW_SHOWNORMAL);
 
第二種:可以再打開文件夾的同時定位到相應的文件
::ShellExecute(NULL, L"open", L"explorer.exe", "/select,d:\CodeSpace\FileRecv\mcisendstring.txt", NULL, SW_SHOWNORMAL);
 
對於前兩種的cmd執行方式,一般是用於打開文件或者鏈接之類的,另外的一些命令需要用到下面的方法:
 
第三種:用於直接打開一個可執行文件,並且可以等待其執行完成,適用於單線程
do{
DWORD lResult;
PROCESS_INFORMATION piProcInfo; 
STARTUPINFO siStartInfo = {sizeof(STARTUPINFO)};
 
if(!CreateProcess(NULL, "uclient.exe /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, "uclient.exe /u", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo);
return 0;
}
}
}while(FALSE);

  

 
第四種:用於調用一個外部可執行文件執行相應命令,並且可以等待其執行完成,適用於單線程,其他部分代碼同上一種
if(!CreateProcess(NULL, "7za.exe a \"d:\CodeSpace\Face.7z\" -o \"d:\CodeSpace\Face/*\"", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo));
if(!CreateProcess(NULL, "7za.exe x \"d:\CodeSpace\Face.7z\" -o \"d:\CodeSpace\Face\"", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo));
 
第五中:system 函數,可以直接執行輸入到cmd里面的命令,但是代碼中執行過程中會出現黑屏的閃爍,無法隱藏
system(“copy \"C:\Users\s810.png\" \"d:\CodeSpace\719950C424FC405CA6139EDFB99F4E08.png\"”);
 
第六種:WinExec 函數(可以直接執行cmd命令以及調用cmd執行命令,並且可以隱藏窗口)
WinExec("cmd.exe /c copy \"C:\Users\s810.png\" \"d:\CodeSpace\s893CD.png\"", SW_HIDE);
 
相關用法:
ex1: WinExec("Notepad.exe c:\\autoexec.bat",SW_SHOW); 執行 notepad.exe 並正常顯示器窗口
ex2: WinExec("Notepad.exe",SW_SHOWMINIMIZED); 執行 notepad.exe 但最小化其窗口
ex3: WinExec("Command.com /c dir c:\\",SW_SHOW); 執行 dir C:\ ,完成后關閉 MSDOS 窗口  
ex4: WinExec("Command.com /k dir c:\\",SW_SHOW); 執行 dir C:\ ,完成后不關閉 MSDOS 窗口 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM