Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 27
1

Запустить одно свое приложение через другое свое приложение

28.06.2016, 00:38. Показов 2435. Ответов 19
Метки нет (Все метки)

Здравствуйте. В программе "программа1" запускаю "программа2" через
C#
1
Process.Start("программа1");
Возникает ошибка, говорит не находит файл, хотя сами себя каждая программа запустить таким же способом может. Также любая стандартная программа тоже запускается. Буду признателен за помощь.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2016, 00:38
Ответы с готовыми решениями:

Как ассоциировать свое приложение с конкретным типом файлов
нужно, чтобы при открытии файла (или ПКМ>открыть с помощью>моя программа) включалась моя программа...

Из неуправляемого кода стороннего приложения, передать в свое приложение массив байт
Опишу сначала суть задачи, 1. Требуется из неуправляемого кода стороннего приложения, передавать в...

Как запустить свое приложение от имени LocalSystem?
Как запустить свое WinForms приложение от имени LocalSystem? Именно свое, а не запускать стороннее...

Как защитить свое приложение от перепродажи
Как можно сделать так чтобы, программу можно было продать и человек которому я ее продал не мог ее...

19
132 / 82 / 29
Регистрация: 01.10.2014
Сообщений: 263
28.06.2016, 00:40 2
Альф, полный путь в запускаемому файлу укажите.
0
123 / 123 / 72
Регистрация: 11.05.2014
Сообщений: 331
28.06.2016, 01:03 3
У вас "программа2" - это полный путь к программе с расширением?
Если директория, содержащая исполняемый файл, не прописана в переменных окружения системы, или же не совпадает с директорией в которой находится "программа1", то нужно явно прописывать полный путь, включающий имя файла [ с расширением или без:
Кликните здесь для просмотра всего текста

Подобно тому как диалоговое окно Run может принимать имя исполняемого файла с расширением или без расширения EXE, наличие расширения EXE желательно в параметре fileName. (с) MSDN

].
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 27
28.06.2016, 09:38  [ТС] 4
Спасибо за ответы, но я забыл упомянуть важную деталь. Расположение "программа2" - неизвестно (то есть, ехе может находиться где-угодно). Так что, полный путь, насколько я понимаю, не подходит.
0
1760 / 1090 / 561
Регистрация: 14.04.2015
Сообщений: 3,920
28.06.2016, 09:55 5
C#
1
 Process.Start(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\programm.exe")
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 27
28.06.2016, 10:02  [ТС] 6
Это путь к ехе "Программа1". Но он известен, ведь ее я запускаю сам. Да и "Программа2" там не находиться.
0
132 / 82 / 29
Регистрация: 01.10.2014
Сообщений: 263
28.06.2016, 10:47 7
Альф, Приведите полный путь нахождения программы1 и программы2 на диске, и приведите код вызова процесса(если там переменные, то содержимое переменных).
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 27
28.06.2016, 10:56  [ТС] 8
D:\Nowhere\проекты\form\Программа1\bin\Debug
D:\Nowhere\проекты\form\Программа2\bin\Debug

Изначальный код:
C#
1
Process.Start("Программа2");
То, что посоветовали выше:
C#
1
Process.Start(Path.GetDirectoryName(Application.ExecutablePath) + "\\Программа2.exe");
0
132 / 82 / 29
Регистрация: 01.10.2014
Сообщений: 263
28.06.2016, 11:08 9
Если написать: Process.Start(@"D:\Nowhere\проекты\form\Программа2\bin\Debug \Программа2.exe");
Программа запускается?
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 27
28.06.2016, 11:58  [ТС] 10
Ну, так, понятное дело, запускается
0
132 / 82 / 29
Регистрация: 01.10.2014
Сообщений: 263
28.06.2016, 12:01 11
Альф, тогда в чём вопрос? вам нужно из Программы2 запустить Программу1, откуда Программа2 узнает путь по которому находится другая программа? Если вы не хотите указывать полностью путь, то положите обе программы в одну папку.
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 27
28.06.2016, 12:07  [ТС] 12
Пользователь запускает Программу1. Программа1 запускает Программу2. Расположение Программа2 не закреплено, так как при перемещении Программы2 код выше не запустит ее. Соответственно, в одной папке с Программой1 вторая также может не быть. Как Программе1 запустить Программу2, не зная точный ее путь? Стандартные программы запускаются без указания пути.
0
132 / 82 / 29
Регистрация: 01.10.2014
Сообщений: 263
28.06.2016, 12:29 13
Альф, Вот так бы сразу. Нужно указать в переменной Path Windows пути к программам. Например как описано здесь: https://msdn.microsoft.com/ru-... e.14).aspx
Пути соответственно надо добавлять те по которым располагаются ваши программы, а не те что указаны в статье.
1
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 27
30.06.2016, 14:58  [ТС] 14
Поспешил с пометкой "Ответ", надо скорее "Спасибо" т.к. "человек старался". После изменения Path Windows Программа1 запустит Программу2 без указания полного пути. Но это всё, проблема остается. Опять-таки, достаточно переместить Программу2, и Программа1 ее не запустит без изменения кода. Какие вообще могут быть способы запускать Программу2, где бы она ни находилась?
0
123 / 123 / 72
Регистрация: 11.05.2014
Сообщений: 331
30.06.2016, 15:04 15
Насколько я понимаю, в любом случае код, который будет вызывать "Программа2", обязан знать / уметь найти точный путь к этой программе.
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 27
30.06.2016, 15:25  [ТС] 16
Единственный выход - поиск по локальным дискам?
Насколько помню, если что-то требует .ini файлы, а они присутствуют где-либо на компьютере, то находятся всегда
0
132 / 82 / 29
Регистрация: 01.10.2014
Сообщений: 263
30.06.2016, 15:36 17
Альф, Вы бы описали что хотите сделать и для чего, может найдётся другой выход и выёживаться так не придётся. Подход поиска надо дополнить сравнением хеша, иначе таких одноимённых Программ1.ехе может найтись 100500 и какую вы будете запускать неясно. Но всё равно это долго и неэффективно.
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 27
30.06.2016, 16:05  [ТС] 18
slashvlz, ну, честно говоря, я дважды описал, что хотелось бы сделать. Единственное, для чего: довольно часто меняется название папок. Даже сегодня переименовывал, собственно, после этого и вновь поднял вопрос. Помимо этого, постоянно переношу папки проектов, поэтому не допускаю ссылок на пути дальше, чем за папку проекта. Также работаю не на одном компьютере - название папок, понятное дело, совсем другое. Это для разработки. При использовании в качестве продукта это также надо, т.к. Программа1 - первый и основной этап работы, а программа2 - вторичный (дополнительный). Программу 2 запускать можно также отдельно, работает, однако без первой программы от второй - толку мало. Поставляются две программы не обязательно вместе, да и установки, как таковой, нет (по крайней мере, пока). Так что, пользователь может закинуть Программу2 куда-угодно.
0
132 / 82 / 29
Регистрация: 01.10.2014
Сообщений: 263
30.06.2016, 16:14 19
Ну так может запрашивать у пользователя, мол "Программа такая-то по такому-то пути не найдена, укажите путь" А последний валидный путь хранить где-нибудь в настройках.
Это что касается других пользователей, ну а для своей проектной папки можно и синхронизацию сделать, через множество облачных решений ну или оффлайн, такой софт тоже есть.
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 27
30.06.2016, 16:26  [ТС] 20
Пока так и запрашиваю, но все же надеялся, что есть способ автоматического нахождения. Синхронизацию решаю обычным заливанием на гугл-драйв
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2016, 16:26

Перехватить консольный вывод в свое приложение
Здоров, народ. Есть вопросик. Необходимо из консольного приложения "вытянуть" текст. Как это можно...

Внедрить свое приложение в контекстное меню Windows
Здравствуйте, подскажите, как сделать так, чтобы при нажатии на файл правой кнопкой мыши, в...

Как можно передавать данные из dll в свое приложение на C#?
Например, стороннее приложение вызвало функцию моей dll "MyInt" c аргументом 12345, как просто...

Как поменять кодировку (перенаправление информации с cmd в свое приложение)
Есть вот такой код using System; using System.IO; using System.Diagnostics; public class...


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

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

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