解決CreateProcess 路徑帶空格問題

2021-08-25 16:27:28 字數 1051 閱讀 7008

當需要生成子程序的時候,需要用createprocess,第乙個引數指定exe所在完整路徑,其實這個路徑有空格和沒空格都沒什麼問題, 第二個引數是傳入的引數列表,引數之間是用空格隔開的,如果其中乙個引數中有空格,像"c://program file"這樣,傳進去的引數列表,會出現如下,argv[0] = "c://progeam" argv[1] = "file",不是我們想要的,其實可以這樣:

cstringgetcrrectinput(const cstring & szinput)

// 有空格,用轉義符處理

cstring szspaceformat = _t("/"%s/"");

szdest.format(szspaceformat,szinput);

return szdest;

}// 用法如下

void createchildprocess()

startupinfo sinfo;

process_information pinfo;

security_attributes security;

security.binherithandle = true;

security.lpsecuritydescriptor = null;

security.nlength = sizeof(security_attributes);

zeromemory(&sinfo, sizeof startupinfo);

zeromemory(&pinfo, sizeof process_information);

sinfo.cb = sizeof(startupinfo);

// 傳入的引數有空格的

cstring szcmd = _t("c://program files");

// 等待子程序結束

::waitforsingleobject(pinfo.hprocess, infinite);

// 關閉子程序控制代碼

closehandle(pinfo.hprocess);

closehandle(pinfo.hthread);

CreateProcess函式使用

startupinfo infostart process information infoprocess memset infostart,0,sizeof infostart infostart.cb sizeof startupinfo infostart.dwflags startf use...

CreateProcess 終止程序

最近需要用到,稍微研究了下。1.供createprocess啟動的程序test.exe,只是列印出引數而已。include stdafx.h include include include using namespace std int main int argc,char argv 程式 incl...

建立程序 CreateProcess

下面來分享一下如何用c 建立程序 開發環境建議vs2017 宇宙第一ide 以下為建立新的程序,以拉起記事本為例 include include using namespace std int main startupinfo 結構體初始化 process information pi proces...