2016-01-31 3 views
-1

Я использую этот код, но я получаю сообщение об ошибке: 2 Я знаю, что это означает, что файл не существует, но не знаю, что делаю неправильно.Ошибка C++ CreateprocessA Ошибка

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; 
} 
+1

Какое значение имеет BrowLoc? – NineBerry

+0

Вы ориентируетесь на Unicode? И почему вы все еще используете TCHAR? Вам действительно нужно поддерживать Windows 98? –

+0

@NineBerry BrowLoc имеет местоположение файла для открытия. LPCSTR BrowLoc = (LPCSTR) buff; – MegRay

ответ

0

Я думаю, вы используете юникод. В этом случае принудительно используйте многобайтовый символ для AssocQueryString().

Используйте приведенный ниже код для первых 3-х строчек.

DWORD size = 1024; 
char buff[1024]; 

int err = AssocQueryStringA(ASSOCF_INIT_IGNOREUNKNOWN, ASSOCSTR_EXECUTABLE, ".html", NULL, buff, &size); 
+0

аргумент типа "char *" несовместим с параметром типа "LPWSTR". Когда я использую char buff [1024]; – MegRay

+0

Вы использовали целые 3 строки, которые я приложил? Ошибка возникает, если вы не заменили третью строку, которую я приложил. – Jin

+0

Я имею в виду, используйте 'char' вместо 'TCHAR', используйте «AssocQueryStringA» вместо «AssocQueryString» и удалим макрос «_T()» для «.html». – Jin

Смежные вопросы