Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Запуск процессов с заданными параметрами


Автор: Legolas 13.11.2007, 17:20
Если такая возможность в C#, как запуск сторонней программы (например, WinMediaPlayer) с определнными начальными параметрами? Я имею ввиду запуск того же плеера с определенным фильмом, с определенной минуты, с особыми настройками - такими как настройками звука (сила звучания) или формат экрана, или, не знаю, скорость воспроизведения. 

Автор: marcusmae 13.11.2007, 17:27
Legolas, да, есть. Метод http://msdn2.microsoft.com/en-us/library/system.diagnostics.process.start(VS.71).aspx класса Process (пространство имён System.Diagnostics) допускает запуск процесса с параметрами. Только эти параметры - аргументы коммандной строки. Не уверен, что MediaPlayer поддерживает аргументы коммандной строки.

В MSDN в качестве примера рассматривается запуск браузера с параметром - url.

Автор: Legolas 13.11.2007, 18:05
это понятно, если написать так Process.Start("http://forum.vingrad.ru/forum"); то он автомат загрузит IE с данной страничкой.

А как это оформляется (аргументы командной строки)? приведи пример. 

Автор: marcusmae 13.11.2007, 18:17
Цитата(Legolas @  13.11.2007,  18:05 Найти цитируемый пост)
это понятно, если написать так Process.Start("http://forum.vingrad.ru/forum"); то он автомат загрузит IE с данной страничкой.


забыли имя процесса написать

Цитата(Legolas @  13.11.2007,  18:05 Найти цитируемый пост)
А как это оформляется (аргументы командной строки)? приведи пример. 


так же, как из консоли оформляется вызов приложения с аргументами : имя образа + пробел + аргументы, разделённые пробелами. Например, такое приложение откроет tracert, который построит трассу перемещений по сети к ya.ru :

Код

using System;

namespace ProcessStartExample
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Diagnostics.Process.Start("tracert", "-d ya.ru");
        }
    }
}


Опция -d указывает не получать имена хостов (оставлять в виде номеров). Это чтобы было более одного аргумента  smile 


Автор: Legolas 13.11.2007, 18:34
Цитата

Цитата

это понятно, если написать так Process.Start("http://forum.vingrad.ru/forum"); то он автомат загрузит IE с данной страничкой.

забыли имя процесса написать


нет, не забыл, по умолчанию такие страницы открываются IE. 

А где можно поподробнее узнать о консольных опциях-параметрах?

Добавлено через 3 минуты и 6 секунд
нет, ошибся - запустится не IE, а браузер по умолчанию.

Добавлено через 7 минут и 17 секунд
кстати, имя процесса указывать совсем не обязательно, тк все файлы открываюся "программами по умолчанию". К примеру можно запустить фильм вот так: 
Код

Process.Start("C:/intolerable_cruelty_(01_of_01).avi");

Автор: marcusmae 13.11.2007, 19:01
Цитата(Legolas @  13.11.2007,  18:34 Найти цитируемый пост)
имя процесса указывать совсем не обязательно, тк все файлы открываюся "программами по умолчанию". К примеру можно запустить фильм вот так: 


Круто. Именно из-за этого я бы указал smile 
  •  программы по умолчанию зарегестрированы не для всех расширений файлов
  •  зарегистрированная программа может работать с данным файлом некорректно (например, нет кодека)
  •  установленных программ, умеющих работать с данным файлом может быть не один десяток (как Вы иначе выберете?)
  •  польза от .Start не исчерпывается одними лишь "вызовами файлов" (кажется Вы собирались ещё какие-то настройки указывать)
Цитата

А где можно поподробнее узнать о консольных опциях-параметрах?


http://support.microsoft.com/KB/241422
http://www.tech-recipes.com/windows_tips1389.html
http://www.google.com/search?client=opera&rls=ru&q=Windows+Media+Player+command+line+options&sourceid=opera&ie=utf-8&oe=utf-8

Автор: Legolas 13.11.2007, 19:36
спасибо, но я там нигде не нашел параметров для изменения звука и других - только открытие-закрытие файлов и размер экрана.

Автор: marcusmae 13.11.2007, 20:57
Цитата(Legolas @  13.11.2007,  19:36 Найти цитируемый пост)
только открытие-закрытие файлов и размер экрана

ещё плейлисты и медиа-устройства

Остальное через аргументы недоступно. Громкость и эквалайзеры следует искать либо в .ini-файле, либо в реестре. Там забиваются значения по умолчанию - их можно было бы изменить. А вот начать проигрывание с определённой позиции так не выйдёт.

Есть ещё одна идея. Вам знакомо COM-взаимодействие? Многие программы его поддерживают. = Попробуйте открыть References проекта на вкладке COM. В зависимости от версии ОС и WMP там должны быть объекты типа Windows Media Player Launcher (и другие). Присоедините какой-нибудь и дважды кликните по названию - откроется Object Browser с содержимым, по которому можно посмотреть, что может пригодиться. Оттуда, возможно, будет доступно больше настроек. Но это уже имеет мало общего с названием темы smile 

Автор: Legolas 14.11.2007, 00:25
спасибо за совет - сейчас попробую.

Добавлено через 5 минут и 8 секунд
похоже то, что нужно! спасиб огромный - щас буду разбираться...

Автор: marcusmae 14.11.2007, 00:37
Не за что. 

Вот ссылка по теме : http://msdn2.microsoft.com/en-us/library/bb249583.aspx

Возможно, понадобится http://msdn2.microsoft.com/en-us/library/bb262657.aspx, хотя что-то можно сделать и без него.

Автор: Legolas 14.11.2007, 01:02
marcusmae
твои ссылки - золото!  smile  smile  smile 

Автор: kven 10.12.2007, 01:19
Эта команда запускает только зарегестрированные программы, или абсолютно любую из указанной дирректории и с параметрами? Мне необходимо запустить просто ехе файл, должно работать?

Автор: sllh 10.12.2007, 01:25
Абсолютно любую -- есть же MSDN, можно http://msdn2.microsoft.com/en-us/library/system.diagnostics.process.start.aspx ;)

Автор: kven 10.12.2007, 03:50
В том то и дело, мсдн читаю.
Запускает мне нужный файл, как доолнительные параметры ввожу то что мне нужно, но то что работает только при выхове из командной строки, внутри программы(она досовская) можно вводить данные только они не вводятся. а когда передаю как второй параметр строковой или как процессинфо вроде как работает но для внутреннего вызова не работают мои параметры.

Может скоро разберусь, но если знаеш подскажи как заставить параметры принимать как будто они были посланы из командной строки

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)