Форум программистов, компьютерный форум CyberForum.ru

Открытие сторонней программы с кодом C++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
Frenk-kobalt
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 10
13.05.2012, 19:57     Открытие сторонней программы с кодом C++ #1
У меня идея пришла в голову открыть с++ кодом сторонную программу, как с bat-файла с текстом start C:путь файла.ехе . Весь гугл облазил, элементарного способа не нашел. Есть идеи?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,581
Записей в блоге: 17
13.05.2012, 20:02     Открытие сторонней программы с кодом C++ #2
C++
1
2
String ExePath="C:\\Windows\\system32\\calc.exe"; // Запускаем калькулятор
ShellExecute(NULL,"open",ExePath.c_str(),NULL,(ExtractFileDir(ExePath)).c_str(),SW_RESTORE);
Есть и другие ф-ции WinApi для таких целей
Frenk-kobalt
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 10
13.05.2012, 20:11  [ТС]     Открытие сторонней программы с кодом C++ #3
А string exepath и shellexecute какой директививой включается?
#include <w32api.h> ?
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,581
Записей в блоге: 17
13.05.2012, 20:40     Открытие сторонней программы с кодом C++ #4
Ну во превых какой у тебя компилятор?
Пробуй
C++
1
2
3
4
#include <windows.h>
#include <string>
std::string ExePath="C:\\Windows\\system32\\calc.exe"; // Запускаем калькулятор
ShellExecute(NULL,"open",ExePath.c_str(),NULL,(ExtractFileDir(ExePath)).c_str(),SW_RESTORE);
Добавлено через 1 минуту
А вообще читай http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Frenk-kobalt
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 10
13.05.2012, 21:00  [ТС]     Открытие сторонней программы с кодом C++ #5
ну я пишу на Dev c++ 4.9.9.2

ну этот код у мя не работает, то есть не запускает прогу.
Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <w32api.h>
#include <windows.h>
#include <string>
int main ()
{
     int den;
     int a, b, c, x;
     printf ("pishi sebe summy dvyx chisel! I doka}|{i chto vi ne robot! \n");
     scanf ("%d%d", &a, &b);
     c= a + b;
     printf ("\nOtvet na vopros?\n %d + %d=?", a, b);
     scanf (" %d", &x);
     if ( x == c) {
          printf("\nDer]|[i i raduisa!8-)");
          std::string ExePath="C:\\Windows\\system32\\calc.exe";
          ShellExecute(NULL,"open",ExePath.c_str(),NULL,(ExtractFileDir(ExePath)).c_str(),SW_RESTORE);
          }
     else {
          return 0;
          }
return 0;
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,581
Записей в блоге: 17
13.05.2012, 21:15     Открытие сторонней программы с кодом C++ #6
Какие ошибки выдает?
exkilla
3 / 3 / 0
Регистрация: 28.12.2009
Сообщений: 68
13.05.2012, 21:15     Открытие сторонней программы с кодом C++ #7
Попробуйте так. У меня запускается калькулятор.
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
#include <stdio.h>
#include <windows.h>
#include <string>
 
int main ()
{
    int den;
    int a, b, c, x;
 
    printf ("pishi sebe summy dvyx chisel! I doka}|{i chto vi ne robot! \n");
    scanf ("%d%d", &a, &b);
 
    c = a + b;
 
    printf ("\nOtvet na vopros?\n %d + %d=?", a, b);
    scanf (" %d", &x);
 
    if (x == c) 
    {
        printf("\nDer]|[i i raduisa!8-)");
        std::string ExePath="C:\\Windows\\system32\\calc.exe";
        ShellExecute(NULL,"open",ExePath.c_str(),NULL,NULL,SW_RESTORE);
    }
 
    return 0;
}
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,581
Записей в блоге: 17
13.05.2012, 21:18     Открытие сторонней программы с кодом C++ #8
Да я забыл убрать ExtractFileDir() это кажется чисто Builder-ровская ф-ция, но рабочую дирректорию все равно надо задавать,в NULL её лучше не ставить
Frenk-kobalt
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 10
13.05.2012, 21:20  [ТС]     Открытие сторонней программы с кодом C++ #9
спасибо, запустилось. Но хочу понять причину ошибки. в моем коде компилятор ругает на
C:\Dev-Cpp\];-)\ankl.cpp In function `int main()':
C:\Dev-Cpp\];-)\ankl.cpp `ExtractFileDir' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
exkilla
3 / 3 / 0
Регистрация: 28.12.2009
Сообщений: 68
13.05.2012, 21:31     Открытие сторонней программы с кодом C++ #10
Цитата Сообщение от Frenk-kobalt Посмотреть сообщение
спасибо, запустилось. Но хочу понять причину ошибки. в моем коде компилятор ругает на
C:\Dev-Cpp\];-)\ankl.cpp In function `int main()':
C:\Dev-Cpp\];-)\ankl.cpp `ExtractFileDir' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
Причину же Вам написал компилятор. Не объявлена функция ExtractFileDir.

Цитата Сообщение от Avazart Посмотреть сообщение
но рабочую дирректорию все равно надо задавать,в NULL её лучше не ставить
Прочитайте MSDN.

lpDirectory [in, optional]
Type: LPCTSTR
A pointer to a null-terminated string that specifies the default (working) directory for the action. If this value is NULL, the current working directory is used. If a relative path is provided at lpFile, do not use a relative path for lpDirectory.
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

В данном случае у нас путь указан в lpFile.
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,581
Записей в блоге: 17
13.05.2012, 21:32     Открытие сторонней программы с кодом C++ #11
Но хочу понять причину ошибки
ExtractFileDir() это кажется чисто Builder-ровская ф-ция
В вашем компиляторе нет такой ф-ции, ищите аналоги либо напишите её сами
Frenk-kobalt
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 10
13.05.2012, 21:34  [ТС]     Открытие сторонней программы с кодом C++ #12
Да, уже читаю...
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,581
Записей в блоге: 17
13.05.2012, 21:35     Открытие сторонней программы с кодом C++ #13
но рабочую дирректорию все равно надо задавать,в NULL её лучше не ставить
Прочитайте MSDN.
exkilla Почитай меня
Узнать корневой каталог
exkilla
3 / 3 / 0
Регистрация: 28.12.2009
Сообщений: 68
13.05.2012, 21:43     Открытие сторонней программы с кодом C++ #14
Avazart, почитал. В данном случае мы указываем путь в lpFile, так что не волнует какая рабочая директория. Запущенно ярлыком или нет. Если не верите на слово - попробуйте и удостоверьтесь.

P.S. Для Вас MSDN является не достоверным источником?
Frenk-kobalt
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 10
13.05.2012, 21:56  [ТС]     Открытие сторонней программы с кодом C++ #15
Я о MSDN первый раз слышу =)
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,581
Записей в блоге: 17
13.05.2012, 21:59     Открытие сторонней программы с кодом C++ #16
P.S. Для Вас MSDN является не достоверным источником?
MSDN, мне друг но истина дороже!

If this value is NULL, the current working directory is used
Если запускаешь чужую прогу то запускать ее надо из её каталога а не из своего...
Иначе она может не найти свои файлы если путь к ним задан относительно
If a relative path is provided at lpFile, do not use a relative path for lpDirectory.
exkilla
3 / 3 / 0
Регистрация: 28.12.2009
Сообщений: 68
13.05.2012, 22:25     Открытие сторонней программы с кодом C++ #17
Avazart, дык мы говорим о конкретном случае. Не так ли? А именно о программе у меня в сообщении на первой странице темы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2012, 22:37     Открытие сторонней программы с кодом C++
Еще ссылки по теме:

C++ Программы с открытым исходным кодом
C++ Открытие файла с видео из программы
Завершение программы с кодом C++

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,581
Записей в блоге: 17
13.05.2012, 22:37     Открытие сторонней программы с кодом C++ #18
Напоминаю мы говорим о
открыть с++ кодом сторонную программу
А с калькулятором я привел пример, потому как он почти на всякой машине есть, просто повезло что он файлы не использует указанным образом
Yandex
Объявления
13.05.2012, 22:37     Открытие сторонней программы с кодом C++
Ответ Создать тему
Опции темы

Текущее время: 20:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru