Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
saserlend
11 / 11 / 5
Регистрация: 25.11.2011
Сообщений: 147
#1

CreatProcess() и 2012 Студия - C++

02.03.2014, 11:57. Просмотров 371. Ответов 4
Метки нет (Все метки)

Не могу разобраться с типом LPWSTR. В 6.0 работает и не жужжит, а в 12 ругается.
Что такого особенного в 12, и как проще всего решить этот вопрос?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
 
    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    
    CreateProcess(NULL, "calc.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
    printf("END\n");
}
error C2664: CreateProcessW: невозможно преобразовать параметр 2 из "const char [9]" в "LPWSTR"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2014, 11:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос CreatProcess() и 2012 Студия (C++):

Студия 2010
В один прекрасный момент MSVS перестал мне при отладке показывать локальные...

Так установилась ли студия?
Вы знаете, был совершено уверен, что позавчера установил визуал студию 2012. ...

Ругается студия на индефикатор
Ругается на &lt;&lt; перед cout и на return 0; #include &lt;iostream&gt; int(main)...

Студия с командной строки
Меня окончательно задолбали IDE, и я хочу юзить с командной строки c++...

Студия выдает ошибки
Студия при компиляции выдает ошибки, раньше на пк стояла другая винда там все...

>< студия косячит или я?
помогите разобраться, я уже задолбался воевать со студией, постоянно что-то не...

4
Убежденный
Ушел с форума
Эксперт С++
15941 / 7252 / 1176
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
02.03.2014, 12:24 #2
LPWSTR - это Long Pointer to Wide-char STRing, указатель на строку в "широких" символах.
Т.е. там подразумевается использование wchar_t.

В Visual C++, начиная, кажется, то ли с 2003, то ли с 2005, Unicode задействован
по умолчанию и отключать его я крайне не советую (будут кракозябры на других
локализациях Windows, можете сами проверить и убедиться).

Поэтому должно быть не "calc.exe", а L"calc.exe". Это во-первых.

Во-вторых, юникодная версия CreateProcess может изменять аргумент
command line, об этом явно сказано в документации.
Поэтому правильнее так, например:

C
1
2
3
wchar_t pCmdLine[] = {L"calc.exe"};
 
CreateProcess(NULL, pCmdLine, ...
1
saserlend
11 / 11 / 5
Регистрация: 25.11.2011
Сообщений: 147
02.03.2014, 12:35  [ТС] #3
А что за 'L' ?
C++
1
wchar_t pCmdLine[] = {L"calc.exe"};
0
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.03.2014, 12:39 #4
http://habrahabr.ru/post/164193/
0
Убежденный
Ушел с форума
Эксперт С++
15941 / 7252 / 1176
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
02.03.2014, 12:41 #5
Строковой литерал.
Такой же, как и обычно, только для "широких" символов (2 байта на символ в Win32).
0
02.03.2014, 12:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2014, 12:41
Привет! Вот еще темы с решениями:

Студия не воспринимает операторы С++
С недавнего времени Visual Studio 2010 перестал идентифицировать операторы...

Ошибка со списком, возможно студия тупит
Нужен список, начал вспоминать с банального, но не даёт... Выводит ошибку:...

Ух ты мне визуал студия что-то подсказывает
Заметил- временами навожу мышку- а там что-то!

Студия зависает намертво при отладке
Здравствуйте. У меня следующая проблема. По учёбе пользуюсь десятой студией....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru