Программа перестает работать при вызове процесса - PullRequest
0 голосов
/ 01 декабря 2009

Я пытаюсь создать программу, которая вызывает другой процесс, используя CreateProcess. После некоторых проблем я изменяю свою программу, чтобы просто открыть известную программу:

if( !CreateProcess( (LPWSTR)"C:\\Program Files\\Opera\\Opera.exe",   // No module name (use command line)
    NULL,                       ,
            // Command line
    NULL,           // Process handle not inheritable
    NULL,           // Thread handle not inheritable
    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
) 

Я нашел этот пример в msdn, но каждый раз, когда я запускаю свою программу, windows (Vista) выдает ошибку msg:

Кто-нибудь знает в чем проблема?

С уважением, Леандро Лима

1 Ответ

7 голосов
/ 01 декабря 2009

Эта строка неверна:

(LPWSTR)"C:\\Program Files\\Opera\\Opera.exe"

LPWSTR является typedef для wchar_t*. Таким образом, вы приводите простую строку (массив символов, которая будет уменьшаться до const char*) до wchar_t*. Конечный результат, вероятно, даже не завершен нулем!

Либо используйте CreateProcessA и бросьте приведение, либо используйте широкую строку:

 L"C:\\Program Files\\Opera\\Opera.exe",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...