В чем разница между CreateProcess и CreateProcessA? - PullRequest
3 голосов
/ 17 июня 2010

В чем разница между CreateProcess и CreateProcessA, также есть ли альтернативы этим в VC ++ 2008?

У меня также есть проблема: я использую функцию CreateProcessA, она хорошо работает в одной системе, но не работает в других системах.

Также, когда я использую CreateProcess, я получаю сообщение об ошибке: невозможно преобразовать 2 параметра из CHAR [40] в LPWSTR, я нахожусь в режиме Unicode

Ответы [ 2 ]

7 голосов
/ 17 июня 2010

Во-первых, CreateProcess - это макрос, который переключается между CreateProcessA и CreateProcessW, которые принимают строки в ANSI или Unicode соответственно.Это зависит от настроек сборки вашего проекта (свойства проекта набора символов), Unicode vs Multi-Byte.Как правило, вы хотите, чтобы все было в Юникоде, так как это допускает глобализацию и добавляет возможность разрешать больше поддерживаемых языков.

Жалоба при преобразовании из char в LPCWSTR показывает, что он ожидает тип WSTR или широкийстрока или строка в кодировке Юникод.Обходной путь - объявить ваши символы с помощью макроса _T ("blahblah").

3 голосов
/ 17 июня 2010

CreateProcess идентичен CreateProcessA («ANSI») или CreateProcessW («широкие символы»), в зависимости от того, компилируете ли вы свой код без или с включенной опцией Unicode.

Разница в том, должна ли строка, передаваемая в качестве параметра, быть строкой ANSI (8-разрядный символ) или строкой Unicode (16-разрядный символ).


Есть также альтернативы, такие как ShellExecuteEx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...