C++创建进程失败的错误

C++ CreateprocessA Failed Error

本文关键字:错误 失败 进程 创建 C++      更新时间:2023-10-16

我使用此代码,但出现失败的错误:2 我知道这意味着该文件不存在,但不知道做错了什么。

DWORD size = 1024;
TCHAR buff[1024];
 int err = AssocQueryString(ASSOCF_INIT_IGNOREUNKNOWN, ASSOCSTR_EXECUTABLE, _T(".html"), NULL, buff, &size);
 STARTUPINFOA si;
 PROCESS_INFORMATION pi;
 ZeroMemory(&si, sizeof(si));
 si.cb = sizeof(si);
 ZeroMemory(&pi, sizeof(pi));
 LPCSTR BrowLoc = (LPCSTR)buff;
 if (!CreateProcessA(BrowLoc,     // No module name (use command line)
     NULL,
     NULL,           // Process handle not inheritable
     NULL,           // Thread handle not inhberitable
     FALSE,          // Set handle inheritance to FALSE
     0,              // No creation flags
     NULL,           // Use parent's environment block
     NULL,           // Use parent's starting directory 
     &si,            // Pointer to STARTUPINFO structure
     &pi)           // Pointer to PROCESS_INFORMATION structure
     )
 {
     printf("CreateProcess failed (%d).n", GetLastError());
     getchar();
     return 0;
 }

我猜你正在使用Unicode。在这种情况下,强制对 AssocQueryString() 使用多字节字符。

对前 3 行使用以下代码。

DWORD size = 1024;
char buff[1024];
 int err = AssocQueryStringA(ASSOCF_INIT_IGNOREUNKNOWN, ASSOCSTR_EXECUTABLE, ".html", NULL, buff, &size);
相关文章: