Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
vlad-mus
0 / 0 / 1
Регистрация: 03.07.2017
Сообщений: 82
1

Вариант запуска приложения в зависимости от входных параметров

17.10.2018, 17:19. Просмотров 802. Ответов 7
Метки нет (Все метки)

Всем привет!
Помогите пожалуйста решить такую проблему...
Пишу проигрыватель.
Задача стоит в следующем, если пользователь выбирает аудио файл в проводнике, то запускать его воспроизведение.
Если же пользователь пытается запустить непосредственно exe файл проигрывателя, то выдавать окно обзора для открытия аудио файла...
Точка входа в программу выглядит так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
static void Main()
{
string[] args = Environment.GetCommandLineArgs();
if(args[1] == "")
{
MessageBox.Show("Второй параметр пуст");
}
else
{
Application.Run(new MainForm(args[1]));
}
}
Пока я не открываю окно обзора, а просто вывожу сообщение на экран.
Вся проблема заключается в том, что когда выбирается аудио файл через проводник, то проигрыватель запускается как нужно.
Входные параметры я проверял, всё верно.
Но вот когда я пытаюсь запустить exe файл проигрывателя, то не происходит ровным счётом ничего.
Если даже и появляется процесс, то он тут же снимается...
Подскажите пожалуйста, в чём может быть проблема?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2018, 17:19
Ответы с готовыми решениями:

Возвратить данные из функции, которая имеет заранее неизвестное количество входных параметров
есть некая функция, например: public void func(params object arr) { что-то делается } в main...

Вариант защиты .Net приложения от взлома
Здравствуйте! Прошу помощи в разработке схемы защиты программы. Есть приложение WPF, создающее и...

Менять форму в зависимости от источника запуска
Всех приветствую. Я хочу сделать одну форму для разных кнопок и чтобы при запуске заголовки в...

Изменение формы в зависимости от параметров меню
Здравствуйте, только начал осваивать Visual Studio и С# в частности, так что многих вещей не знаю....

Посчитать сумму в зависимости от выбранных параметров в comboBox
Имеется форма на которой пользователь может рассчитать конечную сумму выбранного им ноутбука(Скрин...

7
Рядовой
281 / 237 / 134
Регистрация: 17.05.2015
Сообщений: 913
Завершенные тесты: 1
17.10.2018, 17:35 2
Цитата Сообщение от vlad-mus Посмотреть сообщение
Но вот когда я пытаюсь запустить exe файл проигрывателя, то не происходит ровным счётом ничего.
Ну так запустите новую форму, и уже в ней вызывайте MessageBox
C#
1
2
3
4
if(args[1] == "")
{
//new form
}
0
SeIZVeIZ
687 / 632 / 268
Регистрация: 08.02.2014
Сообщений: 1,954
Завершенные тесты: 3
17.10.2018, 17:42 3
какой-то велосипед у Вас с получением аргументов выходит пишите:
C#
1
2
3
4
5
6
7
8
9
10
11
12
static void Main(string[] args)
{
 
if(args.Length > 1 && args[1] == "")
{
MessageBox.Show("Второй параметр пуст");
}
else
{
Application.Run(new MainForm(args[1]));
}
}
и не забывайте о том что количество параметром не обязательно 2 придёт, может и 0, и 1, и что тогда?

Добавлено через 5 минут
p.s. ты точно уверен что при запуске просто exe у тебя есть второй параметр в аргументах к которому ты обращаешься? если он отсутствует то приложение и будет падать, можно посмотреть в событиях винды что оно при этом записало, и записало ли
0
vlad-mus
0 / 0 / 1
Регистрация: 03.07.2017
Сообщений: 82
17.10.2018, 20:37  [ТС] 4
Ну а если мне нужно открыть окно обзора? OpenFileDialog
Я пишу код в блокноте, поэтому добавлять на форму контролы не могу...
Только всё программно.
Это я заранее уточняю на тему: "добавьте соответствующий контрол на форму в вижуал студии".
0
OwenGlendower
Супер-модератор
Эксперт .NET
9488 / 8295 / 3549
Регистрация: 17.03.2014
Сообщений: 16,527
Записей в блоге: 1
17.10.2018, 22:10 5
vlad-mus, OpenFileDialog это обычный класс.
C#
1
2
3
4
5
var ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
    // Файл выбран
}
Единственное что может понадобиться это
C#
1
using System.WindowsForms;
0
vlad-mus
0 / 0 / 1
Регистрация: 03.07.2017
Сообщений: 82
18.10.2018, 08:49  [ТС] 6
Дело в том, что это у меня windows forms приложение.
Проверку входных параметров я делаю здесь:

C#
1
2
3
4
5
6
7
8
9
10
11
12
static void Main()
{
string[] args = Environment.GetCommandLineArgs();
if(args[0] == args[1])
{
var ofd = new OpenFileDialog();
ofd.ShowDialog();
}
else
{
Application.Run(new MainForm(args[1]));
}
Таким образом я проверяю, если пользователь пытается запустить exe файл проигрывателя, то входные параметры совпадут и должно открыться окно обзора, а если попытка открыть другой файл, то просто запустить проигрыватель.
Второй вариант работает, но вот первая часть условия, с совпадением параметров и открытием окна обзора не работает...
При чём я не успеваю заметить, появляется процесс или нет.
0
SeIZVeIZ
687 / 632 / 268
Регистрация: 08.02.2014
Сообщений: 1,954
Завершенные тесты: 3
18.10.2018, 09:22 7
Лучший ответ Сообщение было отмечено vlad-mus как решение

Решение

Цитата Сообщение от vlad-mus Посмотреть сообщение
При чём я не успеваю заметить, появляется процесс или нет.
я Вам уже дал понять, что у вас нету args[1] при запуске просто exe файла и при обращении к такому полю будет ошибка и приложение аварийно завершиться, данная ошибка может быть записана в журнал Windows (о чём я также говорил). Чтобы попробовать это исключить для начала нужно использоваться конструкцию try/catch чтобы ловить ошибки, и проверять вообще сколько аргументов пришло то Вам:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static void Main()
{
    string[] args = Environment.GetCommandLineArgs();
    if(args.Lenght > 1) // делаем это всё только при условии что у нас 2 и более параметра пришло
    {
        if(args[0] == args[1])
        {
            var ofd = new OpenFileDialog();
            ofd.ShowDialog();
        }
        else
        {
            Application.Run(new MainForm(args[1]));
        }
    }
    else
    {
        MessageBox.Show("Упс. К нам пришло меньше двух параметров :(");
    }
}
0
vlad-mus
0 / 0 / 1
Регистрация: 03.07.2017
Сообщений: 82
18.10.2018, 19:04  [ТС] 8
Спасибо всем огромное!
0
18.10.2018, 19:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2018, 19:04

Запрет запуска стороннего приложения
Всем привет. Есть мое приложение и есть приложение AutoCad. При открытом AutoCad сделать запрет на...

Параметры запуска другого приложения
Нужно узнать с какими параметрами пользователь запустил другой процесс (известно какой). Измучал...

Определение инициатора запуска приложения
Здравствуйте! Можно ли в процессе работы программы определить каким образом она была запущена:...


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

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

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