Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > Создание процесса |
Автор: maxi91m 21.1.2010, 21:27 | ||
Код компилируется но блокнот не запускается. Что я делаю не так?(ОС Win7)
![]() |
Автор: artsb 21.1.2010, 21:35 | ||
А так:
? |
Автор: maxi91m 21.1.2010, 21:39 |
Да так заработало. Блин а почему с одним слешем не работает? А почему нельзя так написать? CreateProcess(NULL,"C:\\Windows\\notepad.exe",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi) Возникает ошибка Error 1 error C2664: 'CreateProcessW' : cannot convert parameter 2 from 'const char [23]' to 'LPWSTR' Если явно преобразовываю CreateProcess(NULL,(LPWSTR)"C:\\Windows\\notepad.exe",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi) то запускается но на этом месте возникает какая то ошибка Что делает волшебного _tcscpy(buff, TEXT("C:\Windows\notepad.exe")); |
Автор: artsb 21.1.2010, 21:42 |
Спецсимвол. Нужно экранировать. |
Автор: maxi91m 21.1.2010, 22:29 |
Что скажите?(см пост выше) |
Автор: bilbobagginz 21.1.2010, 22:56 |
потому что напр. "\n" - это на Си - переход на новую строку. |
Автор: artsb 21.1.2010, 23:49 |
\ - служит для экранирования. А вот чтобы использовать сам символ '\', нужно его заэкранировать. |
Автор: maxi91m 22.1.2010, 01:23 |
Со слешами разобрались, а вот почему когда я просто строку передаю не работает? |
Автор: artsb 22.1.2010, 09:47 |
maxi91m, сори ![]() ![]() Ну GremlinProg уже написал в чём дело. |
Автор: Dem_max 22.1.2010, 16:36 |
макрос TEXT у тебя проект в UNICODE а ты свою строку в CreateProcess пишешь как char, а в юникоде строки определяются как widechar. в винде существую 2 функции одна для юникода CreateProcessW, а другая для обычных строк CreateProcessA, а CreateProcess это всего лишь макрос. |