Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 21.02.2018
Сообщений: 10
1

Запуск внешней программы из другой программы

24.04.2018, 16:30. Просмотров 2174. Ответов 19
Метки нет (Все метки)

День добрый! Мне нужно запустить exeшник Hello world программы при компиляции другой программы. Пробовал делать через Winexec, Shellexecute, CreateProcess, но не получается.Помещал exeшник Hello world в саму system32 и пытался вызвать ее оттуда system("start путь...exe"), но прога не находит даный файл. Помогите люди добрые рабочим вариантом!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2018, 16:30
Ответы с готовыми решениями:

Запуск функции другой программы
Как как программа может запустить функцию другой программы? Пояснение: //Программа функцию...

Запуск из программы с админскими привилегиями внешней программы без прав админа
Нужно в программе которая запущенна под амином запустить другую программу без прав админа.

Запуск внешней программы программы из коммнадной строки
Здравствуйте, есть программа D:\user\start.exe Как средствами excel vba вызвать командную строку и...

Запуск внешней программы в форме программы
Всем привет :) может Вы меня и не поймете, но не пинайте, я только учусь :) Делаю я оболочку...

19
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
24.04.2018, 16:32 2
Ты путь полный указывал? Показывай как пробовал с CreateProcess().
0
0 / 0 / 0
Регистрация: 21.02.2018
Сообщений: 10
24.04.2018, 16:35  [ТС] 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<cstdlib>
#include<Windows.h>
#include<string>
int main() {
    
    TCHAR szPath[] = TEXT("C:\\Windows\\System32\\Hello_world.exe");
    STARTUPINFO si;
    memset(&si, 0, sizeof(si));
    si.cb = sizeof(si);
    PROCESS_INFORMATION pi;
    memset(&pi, 0, sizeof(pi));
    CreateProcess(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
    return 0;
}
0
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
24.04.2018, 17:11 4
C++
1
CreateProcess(szPath, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
0
0 / 0 / 0
Регистрация: 21.02.2018
Сообщений: 10
24.04.2018, 17:16  [ТС] 5
А как мне сделать так, чтобы Hello world открывалась в новом консольном окне?
0
0 / 33 / 5
Регистрация: 01.12.2017
Сообщений: 687
24.04.2018, 17:29 6
nikid, закройте материнскую программу, а из дочерней запустите вновь материнскую с помощью WinExec.

Добавлено через 1 минуту
У вас не работает WinExec, потому что у программы нет прав на доступ к папке system32. Можно создать ярлык и в свойствах задать запуск программы от имени администратора или в свойствах самой программы так сделать.
0
0 / 0 / 0
Регистрация: 21.02.2018
Сообщений: 10
24.04.2018, 17:34  [ТС] 7
Все я разобрался сам!
Я поменял расположение файла
C++
1
TCHAR szPath[] = TEXT("C:\\Users\\Никита\\Documents\\Visual Studio 2015\\Projects\\Hello_world\\Debug\\Hello_world.exe");
и сделал через
C++
1
ShellExecute(NULL, NULL, szPath, NULL, NULL, SW_SHOWNORMAL);
0
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
24.04.2018, 18:23 8
Это по-древнему. Делай как положено.
0
0 / 33 / 5
Регистрация: 01.12.2017
Сообщений: 687
25.04.2018, 07:49 9
nmcf, а как положено?
0
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
25.04.2018, 08:03 10
Через CreateProcess, я об этом уже писал.
0
Maniac
Эксперт С++
1448 / 949 / 159
Регистрация: 02.01.2009
Сообщений: 2,814
Записей в блоге: 1
25.04.2018, 16:15 11
Цитата Сообщение от nmcf Посмотреть сообщение
Это по-древнему. Делай как положено.
Цитата Сообщение от nmcf Посмотреть сообщение
Через CreateProcess, я об этом уже писал.
что вы за бред несете? может для начала сами разберетесь в чем разница между
ShellExecute и CreateProcess ?
0
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
25.04.2018, 16:27 12
Я имел в виду WinExec древний. ShellExecute не далеко ушёл - функция Проводника.
0
Maniac
Эксперт С++
1448 / 949 / 159
Регистрация: 02.01.2009
Сообщений: 2,814
Записей в блоге: 1
25.04.2018, 16:37 13
Цитата Сообщение от nmcf Посмотреть сообщение
ShellExecute не далеко ушёл - функция Проводника.
ShellExecute дико жарная обвертка над CreateProcess, она немного для других целей. К примеру нужно открыть текстовый документ в любимом для пользователя блокноте вот здесь ShellExecute в самый раз.
0
0 / 33 / 5
Регистрация: 01.12.2017
Сообщений: 687
25.04.2018, 17:02 14
nmcf, какая разница, что WinExec старая, если она работает исправно и нужно лишь запустить Exe файл?
0
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
25.04.2018, 18:23 15
Документацию прочитай. Оставлена для обратной совместимости с древними программами. Все новые должны использовать CretaeProcess().
0
0 / 33 / 5
Регистрация: 01.12.2017
Сообщений: 687
25.04.2018, 20:55 16
nmcf, а чем эта функция хуже то? Она совместима с любой программой.
0
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
25.04.2018, 21:04 17
This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function.
0
0 / 33 / 5
Регистрация: 01.12.2017
Сообщений: 687
25.04.2018, 21:16 18
nmcf, я не знаю, зачем в MSDN это написали, но у меня работает со всеми exe.
0
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
25.04.2018, 22:02 19
А завтра уберут эту поддержку и перестанет работать. Оставлено для старых программ, а не для использования в новых.
0
0 / 33 / 5
Регистрация: 01.12.2017
Сообщений: 687
26.04.2018, 07:26 20
nmcf, если бы Microsoft так ненавидела эту функцию, то давно убрали бы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2018, 07:26

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Запуск внешней программы
Доброго времени суток. exec - запускает но не возвращает управление программе system - запускает...

Запуск внешней программы
В программе создается некое изображение, которое потом нужно открыть внешней программой. Но до для...

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

запуск внешней программы
Все же никак не получается запустить exe-шник, когда программа висит в трее (например в какое-то...


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

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

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