Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6160 / 2851 / 1042
Регистрация: 01.06.2021
Сообщений: 10,408

Как правильно задать полное имя файла для CreateProcess

27.12.2023, 22:10. Показов 1510. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никак не получается создать процесс через CreateProcess.
Постоянно получаю ошибку 123. В документации сказано, что это
ERROR_INVALID_NAME
The filename, directory name, or volume label syntax is incorrect.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
 
if( !CreateProcess(
                TEXT("‪‪C:\\Users\\mypcname\\Downloads\\app.exe"),
                NULL,
                NULL,           // Process handle not inheritable
                NULL,           // Thread handle not inheritable
                TRUE,           // Set handle inheritance to TRUE
                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
            )
{
    printf( "CreateProcess failed (%d).\n", GetLastError() );
    return;
}
printf( "Process created\n");
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
Как вообще создаются процессы?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.12.2023, 22:10
8
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
28.12.2023, 00:57
Лучший ответ Сообщение было отмечено Royal_X как решение

Решение

В 8 строке перед кавычками имеются лишние символы TEXT("‪‪223F3FC:\\Users\\mypcname\\Downloads\\app.exe" )
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6160 / 2851 / 1042
Регистрация: 01.06.2021
Сообщений: 10,408
28.12.2023, 01:11  [ТС]
Digit@ll, и вправду есть. Код пишу в C::B, а эта ide ничего не показывала. Скопировал в VS Code, редактор сразу подтвердил вашу версию
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
28.12.2023, 01:15
Я просто не использую Юникод в проектах, Студия сразу возмущаться начала
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6160 / 2851 / 1042
Регистрация: 01.06.2021
Сообщений: 10,408
28.12.2023, 01:19  [ТС]
Digit@ll, я путь к файлу копировал через свойства файла в Проводнике, а потом просто вставлял в код в C::B. Данная ide, видимо, не способна уведомлять о таких вещах.
А вот VS Code сразу подсказал.
Спасибо за идею, сэкономили мое время)
Миниатюры
Как правильно задать полное имя файла для CreateProcess  
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
28.12.2023, 08:24
Цитата Сообщение от Royal_X Посмотреть сообщение
NULL,
Никогда так не делайте.
1. Если вы указываете первый параметр (имя программы), то программа должна указываться дважды: в первом и во втором параметрах. Иными словами, второй параметр - это полная командная строка, передаваемая в программу "как есть", а не "параметры программы", как ошибочно трактует его 80% людей.
2. Второй параметр не может быть константой.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6160 / 2851 / 1042
Регистрация: 01.06.2021
Сообщений: 10,408
28.12.2023, 11:34  [ТС]
Замабувараев, но ведь в доку сказано:

The lpCommandLine parameter can be NULL. In that case, the function uses the string pointed to by lpApplicationName as the command line.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
29.12.2023, 17:49
Цитата Сообщение от Royal_X Посмотреть сообщение
The lpCommandLine parameter can be NULL.
Тогда в функции main у дочернего процесса параметр argv будет NULL, что недопустимо.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6160 / 2851 / 1042
Регистрация: 01.06.2021
Сообщений: 10,408
29.12.2023, 18:31  [ТС]
Замабувараев, я сделал уже по-другому: первый выставил NULL, а задал второй
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.12.2023, 18:31
Помогаю со студенческими работами здесь

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения/
C++

Пользователь вводит строку, содержащую полное имя файла. Вывести имя файла, расширение и имя первого каталога
Пользователь вводит строку, содержащую полное имя файла (Имя диска, список каталогов, имя файла и расширения) Выделить из введенной строки...

Как узнать полное имя файла зная его краткое имя?
например при запуске программы достаточно написать "Excel" или "Calc" при этом система уже в курсе где этот файл лежит. как программно...

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить из строки только имя первого католога
Помогите пожалуйста!!! Залание: Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить из строки только имя первого...

Как задать рандомное имя для загружаемого файла?
Добрый вечер, разобрался с загрузкой файлов на сервер, но появилась проблема. Необходимо задать рандомное имя для файла, который...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru