starting an .exe file from c++ in windows
Use the canonical ShellExecute WinAPI function. The simplest case:
ShellExecute(hwnd, "open", "c:\\MyProgramPath\\WScilex.exe", NULL, NULL, 0);
answered Nov 29, 2012 at 10:59
Zaur Nasibov Zaur Nasibov
22.3k 12 12 gold badges 56 56 silver badges 83 83 bronze badges
thanks I used «Cheers and hth. — Alf» suggestion, it pretty short
Nov 29, 2012 at 11:12
P.S. don’t forget to accept the correct answer to your question(s)!
Nov 29, 2012 at 12:50
Do not try to use quotes twice, as you do in Command Prompt (cmd). In a c++ code you won’t need to specify it in quotes if you have ‘spaces’ in the file path.
You should use ‘WinExec’ instead of ‘system’, so console window will not be shown.
WinExec("C:\\Program Files\\VideoLAN\\VLC\\vlc.exe",0);
answered Nov 29, 2012 at 11:07
Hemendra Sharma Hemendra Sharma
1,063 9 9 silver badges 21 21 bronze badges
The system function passes the string as a command to the system’s default command interpreter, in Windows [cmd.exe].
So, simply don’t have an extraneous space at the start of the command:
system( "\"C:/Program Files (x86)/scilab-5.3.3/bin/WScilex.exe\"" );
The [cmd.exe] command interpreter is happy with the forward slashes in the path.
Your first attempt:
system( "\" C:/Program Files (x86)/scilab-5.3.3/bin/WScilex.exe\"");
↑ Has an extraneous space at the start. The space matters because the command string is quoted. But you need the quotes because the path contains a space.
Your second attempt:
system( "start" C:/Program Files (x86)/scilab-5.3.3/bin/WScilex.exe\"");
↑ Should not compile. This is not real code. At least not code that you have successfully compiled and run.
Your third attempt:
system( "\" C:\\Program "" Files""(x86)\\scilab-5.3.3\\bin\\WScilex.exe"");
↑ Has an extraneous space at the start. The space matters because the command string is quoted. But you need the quotes because the path contains a space.
Создание и запуск проекта консольного приложения C++
Вы создали проект консольного приложения C++ и ввели код. Теперь вы можете выполнить сборку приложения и запустить его в Visual Studio. Затем запустите его как автономное приложение из командной строки.
Предварительные требования
- Установите и запустите на своем компьютере Visual Studio с рабочей нагрузкой «Разработка классических приложений на C++». Если установка еще не выполнена, следуйте инструкциям в статье Установка поддержки C++ в Visual Studio.
- Создайте проект «Hello, World!». По умолчанию он содержит код для печати Hello World! . Если вы еще не сделали этого, выполните действия, описанные в разделе Создание проекта консольного приложения С++.
Если Visual Studio выглядит следующим образом, можно приступать к сборке и запуску приложения:
Сборка и запуск кода в Visual Studio
- Для сборки проекта выберите в меню Сборка пункт Собрать решение. Окно Вывод отображает результаты процесса сборки.
- Чтобы запустить этот код, в строке меню выберите Отладка и Запуск без отладки. Открывается окно консоли, и запускается ваше приложение. При запуске консольного приложения в Visual Studio система выполняет код, а затем выводит сообщение «Нажмите любую клавишу, чтобы продолжить. . .», чтобы вы могли просмотреть выходные данные.
Поздравляем! Вы создали свое первое консольное приложение «Hello, world!» в Visual Studio! Нажмите любую клавишу, чтобы закрыть окно консоли и вернуться в редактор Visual Studio.
Выполнение кода в командном окне
Обычно консольные приложения запускаются из командной строки, а не в Visual Studio. После сборки приложения Visual Studio его можно запустить из командного окна. Вот как можно найти и запустить новое приложение в окне командной строки.
- В обозревателе решений выберите решение HelloWorld (а не проект HelloWorld) и щелкните правой кнопкой мыши, чтобы открыть контекстное меню. Выберите Открыть папку в проводнике, чтобы открыть окно проводника в папке решения HelloWorld.
- В окне проводник откройте папку Debug . Эта папка содержит файлы приложения, HelloWorld.exe и файлы отладки. Удерживая нажатой HelloWorld.exe клавишу SHIFT, щелкните правой кнопкой мыши, чтобы открыть контекстное меню. Выберите команду Копировать как путь, чтобы скопировать путь к приложению в буфер обмена.
- В окне проводник откройте папку x64 , а затем папку Debug . Эта папка содержит файлы приложения, HelloWorld.exe и файлы отладки. Удерживая нажатой HelloWorld.exe клавишу SHIFT, щелкните правой кнопкой мыши, чтобы открыть контекстное меню. Выберите команду Копировать как путь, чтобы скопировать путь к приложению в буфер обмена.
- Чтобы открыть окно командной строки, нажмите Windows + R, чтобы открыть диалоговое окно Выполнить. Введите cmd.exe в текстовом поле Открыть, а затем выберите ОК для запуска окна командной строки.
- В окне командной строки щелкните правой кнопкой мыши, чтобы вставить путь к приложению в командную строку. Нажмите клавишу ВВОД, чтобы запустить приложение.
Поздравляем! Вы создали и запустили консольное приложение в Visual Studio.
Следующие шаги
После создания и запуска этого простого приложения можно приступать к более сложным проектам. Дополнительные сведения см. в разделе Использование интегрированной среды разработки Visual Studio для разработки приложений для настольных систем на языке C++. В нем содержатся более подробные пошаговые руководства, посвященные возможностям Microsoft C++ в Visual Studio.
Руководство по устранению неполадок
Здесь приведены решения распространенных проблем, которые могут возникнуть при создании первого проекта C++.
Сборка и запуск кода в Visual Studio: проблемы
Если в редакторе исходного кода отображаются красные волнистые линии, то сборка может содержать ошибки или предупреждения. Убедитесь, что код соответствует примеру в написании, пунктуации и регистре.
Выполнение кода в командном окне: проблемы
Если путь, показанный в проводник, заканчивается \HelloWorld\HelloWorld на , вы открыли проект HelloWorld вместо решения HelloWorld. Вы будете смущены папкой Debug , которая не содержит вашего приложения. Перейдите на уровень вверх в проводнике, чтобы открыть папку решения — первый HelloWorld в пути. Эта папка также содержит папку Debug , и вы найдете в ней свое приложение.
Вы также можете перейти к папке решения Debug в командной строке, чтобы запустить приложение. Приложение не будет запускаться из других каталогов, если не указан путь к приложению. Однако вы можете скопировать приложение в другой каталог и запустить его из него. Его также можно скопировать в каталог, указанный PATH переменной среды, а затем запустить из любого места.
Если путь, показанный в проводник, заканчивается \HelloWorld\HelloWorld на , вы открыли проект HelloWorld вместо решения HelloWorld. Вы будете смущены папкой x64\Debug , которая не содержит вашего приложения. Перейдите вверх по уровню в проводник, чтобы перейти к папке решения, первой HelloWorld в пути. Эта папка также содержит папку x64\Debug , и вы найдете в ней свое приложение.
Вы также можете перейти к папке решения x64\Debug в командной строке, чтобы запустить приложение. Приложение не будет запускаться из других каталогов, если не указан путь к приложению. Однако вы можете скопировать приложение в другой каталог и запустить его из него. Его также можно скопировать в каталог, указанный PATH переменной среды, а затем запустить из любого места.
Если в контекстном меню отсутствует параметр Копировать как путь, закройте меню, а затем удерживайте нажатой клавишу SHIFT при повторном открытии. Эта команда предназначена только для удобства. Можно также скопировать путь к папке из панели поиска проводника и вставить его в диалоговое окно Выполнить, а затем ввести имя исполняемого файла в конце. При этом потребуется чуть больше действий по вводу текста, но результат будет тем же.
Среды разработки для С
Одной из распространенных сред разработки для программирования на Windows является Visual Studio . В данном случае мы будем использовать бесплатную и полнофункциональную среду Visual Studio 2019 Community, которую можно найти по адресу https://visualstudio.microsoft.com/ru/vs/community/.
После загрузки и запуска установщика Visual Studio в нем необходимо отметить пункт Разработка классических приложений на C++ :
Выбрав все необходимые пункты, нажмем ОК для запуска установки. После установки Visual Studio создадим первый проект. Для этого откроем Visual Studio. На стартовом экране выберем тип Empty Project для языка C++:
На следующем экране в поле для имени проекта дадим проекту имя HelloApp и также можно указать расположение проекта. И затем нажмем на Create для создания проекта.
После этого Visual Studio создаст пустой проект. Добавим в него текстовый файл для набора исходного кода. Для этого в окне Solution Explorer (Обозреватель решений) нажмем правой кнопкой мыши на узел Source Files и в контекстом меню выберем Add -> New Item. :
Затем нам откроется окно для добавления нового элемента:
Здесь нам надо выбрать пункт C++ File(.cpp) , а внизу окна укажем для файла имя hello.c . Как правило, исходные файлы на Си имеют расширение .с . Оно указывает, что этот файл содержит исходный код на языке С, и он будет обрабатываться соответствующим компилятором.
Настройка проекта
После добавления файла изменим опции проекта. Для этого перейдем к пункту меню Project -> Properties
В окне свойств проекта в левой части перейдем к секции С/С++ и далее к пункту Advanced :
В правой части окна для поля Compile As установим значение Compile as C Code (/TC) . Тем самым мы говорим, чтобы по умолчанию исходный код компилировался именно как код С, а не С++.
После установки этого значения нажмем на кнопку «Применить», чтобы новые настройки конфигурации вступили в силу.
Для работы с языком Си может быть полезна еще одна настройка — установка стандарта языка. Перейдем к пункту С/С++ -> Language . Здесь в поле C Language Standard мы можем установить один из доступных стандартов для языка Си, который будет применяться для компиляции:
Правда, в данном случае он не играет значения, поэтому оставим для этого параметра настройку по умолчанию.
Определение кода программы
После добавления файла >hello.c проект будет иметь следующую структуру:
Вкратце пробежимся по этой структуре. Окно Solution Explorer содержит в решение. В данном случае оно называется HelloApp. Решение может содержать несколько проектов. По умолчанию у нас один проект, который имеет то же имя — HelloApp. В проекте есть ряд узлов:
- External Dependencies : отображает файлы, которые используются в файлах исходного кода, но не являются частью проекта
- Header Files : предназначена для хранения заголовочных файлов с расширением .h
- Resource Files : предназначена для хранения файлов ресурсов, например, изображений
- Source Files : хранит файлы с исходным кодом
Теперь определим в файле hello.c простейший код, который будет выводить строку на консоль:
#include // подключаем заголовочный файл stdio.h int main(void) // определяем функцию main < // начало функции printf("Hello METANIT.COM!\n"); // выводим строку на консоль return 0; // выходим из функции >// конец функции
Здесь использован весь тот код, который был рассмотрен в предыдущих темах про компиляцию с помощью GCC.
Теперь запустим программу. Для этого в Visual Studio нажмем на сочетание клавиш Ctrl+F5 или выберем пункт меню Debug -> Start Without Debugging :
И в итоге Visual Studio передаст исходный код компилятору, который скомпилирует из кода исполняемый файл exe, который потом будет запущен на выполнение. И мы увидим на запущенной консоли наше сообщение:
Затем в проекте в папке x64/Debug мы можем увидеть скомпилированный файл exe, который мы можем запускать независимо от Visual Studio:
В данном случае файл HelloApp.exe как раз и представляет скомпилированный исполняемый файл.
При подготовке материала использовались источники:
https://stackoverflow.com/questions/13624222/starting-an-exe-file-from-c-in-windows
https://learn.microsoft.com/ru-ru/cpp/build/vscpp-step-2-build?view=msvc-170
https://metanit.com/c/tutorial/1.4.php