11 / 11 / 5
Регистрация: 25.11.2011
Сообщений: 147
1

CreatProcess() и 2012 Студия

02.03.2014, 11:57. Показов 555. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2014, 11:57
Ответы с готовыми решениями:

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

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

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

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

4
Ушел с форума
Эксперт С++
16449 / 7413 / 1186
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 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
11 / 11 / 5
Регистрация: 25.11.2011
Сообщений: 147
02.03.2014, 12:35  [ТС] 3
А что за 'L' ?
C++
1
wchar_t pCmdLine[] = {L"calc.exe"};
0
Каратель
Эксперт С++
6606 / 4025 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
02.03.2014, 12:39 4
http://habrahabr.ru/post/164193/
0
Ушел с форума
Эксперт С++
16449 / 7413 / 1186
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
02.03.2014, 12:41 5
Строковой литерал.
Такой же, как и обычно, только для "широких" символов (2 байта на символ в Win32).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2014, 12:41
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru