CreateProcess 调用路径有空格,加\”也不行

haha0909 2021-02-23 03:18:49
Unicode下,调用CreateProcess,如果可执行文件路径没有空格就可以,有空格就提示“不是内部或外部命令,也不是可以运行的程序或批处理文件”。
百度说路径有空格加上双引号,也有说要加结束符,都加了但是也没用。

STARTUPINFO si = {0};
si.cb = sizeof(STARTUPINFO);
ZeroMemory( &si, sizeof (si));
si.hStdError = hPipeWrite;
si.hStdOutput = hPipeWrite;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
si.wShowWindow = SW_HIDE;//SW_SHOW;

PROCESS_INFORMATION pi = {0};
ZeroMemory( & pi, sizeof (pi));

CString szDest = _T("\"") + sCmdText+_T("\"\0");
CString hebing = szDest + _T(" ") + parameter ;
BOOL bProcess = CreateProcess(NULL, (LPWSTR)(LPCTSTR)hebing, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
...全文
935 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
haha0909 2021-03-23
  • 打赏
  • 举报
回复
引用 2 楼 Eleven 的回复:
TCHAR szApplication[MAX_PATH] = { TEXT("....") }; TCHAR szCommandLine[MAX_PATH] = { TEXT("....") }; CreateProcess(szApplication, szCommandLine, ....);
Unicode下,CreateProcess的第一个参数必须为空,第二个参数是可执行文件+其他参数,CreateProcess(szApplication, szCommandLine, ....)这样就会调用失败,也不知道为啥。
haha0909 2021-03-23
  • 打赏
  • 举报
回复
引用 1 楼 xf_21 的回复:
你把 hebing 打印出来看看,格式应该是不对的
格式对的,因为路径变成没有空格就正确了
sevancheng 2021-03-03
  • 打赏
  • 举报
回复
好像是有这么个问题,改文件或文件夹名避坑
Eleven 2021-03-01
  • 打赏
  • 举报
回复
TCHAR szApplication[MAX_PATH] = { TEXT("....") }; TCHAR szCommandLine[MAX_PATH] = { TEXT("....") }; CreateProcess(szApplication, szCommandLine, ....);
xf_21 2021-02-23
  • 打赏
  • 举报
回复
你把 hebing 打印出来看看,格式应该是不对的

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧