Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 09.01.2017
Сообщений: 55
WPF

Windows Media Player (WindowsFormsHost) воспроизводится фоном

19.01.2020, 11:18. Показов 3544. Ответов 4

Студворк — интернет-сервис помощи студентам
Доброго времени суток. На WPF XAML я написал такое окно (работает в полноэкранном режиме):
XML
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
27
28
29
30
31
32
33
34
35
<Window x:Class="Program.Menu"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Program"
        mc:Ignorable="d"
        Title="Test" Height="1080" Width="1920"
        ResizeMode="NoResize" WindowState="Maximized" WindowStyle="None" Foreground="White">
    <Window.Resources>
        <Style TargetType="Label" x:Key="but" x:Name="but">
            <Setter Property="Foreground" Value="White" />
            <Setter Property="FontSize" Value="18" />
            <Setter Property="VerticalContentAlignment" Value="Center" />
            <Setter Property="HorizontalContentAlignment" Value="Center" />
            <Setter Property="Cursor" Value="Hand" />
            <Setter Property="Background">
                <Setter.Value>
                    <ImageBrush ImageSource="button.png"/>
                </Setter.Value>
            </Setter>
            <Setter Property="Height" Value="100" />
            <Setter Property="Width" Value="250" />
            <EventSetter Event="MouseLeftButtonUp" Handler="OnLabelButtonClick" />
        </Style>
    </Window.Resources>
    <Window.Background>
        <ImageBrush ImageSource="logo.png" Stretch="UniformToFill"/>
    </Window.Background>
    <Grid x:Name="Main">
        <Label x:Name="play" Content="ЗАПУСТИТЬ" Margin="20" HorizontalAlignment="Left" VerticalAlignment="Top" Style="{DynamicResource but}" />
        <Label x:Name="sett" Content="НАСТРОЙКИ" Margin="20" HorizontalAlignment="Center" VerticalAlignment="Top" Style="{DynamicResource but}" />
        <Label x:Name="exit" Content="ВЫЙТИ" Margin="20" HorizontalAlignment="Right" VerticalAlignment="Top" Style="{DynamicResource but}" />
    </Grid>
</Window>
А программно я добавил WindowsFormsHost и Windows Media Player:
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
27
28
29
        private System.Windows.Forms.Integration.WindowsFormsHost wfh = null;
        private AxWMPLib.AxWindowsMediaPlayer wmp = null;
        public Program()
        {
            Loaded += (o, e) => IntroStart();
            InitializeComponent();
        }
        private void IntroStart()
        {
            wfh = new System.Windows.Forms.Integration.WindowsFormsHost();
            this.wfh.Name = "wfh";
            wfh.Height = this.Height;
            wfh.Width = this.Width;
            wfh.Visibility = Visibility.Visible;
            wfh.VerticalAlignment = VerticalAlignment.Center;
            wfh.HorizontalAlignment = HorizontalAlignment.Center;
            wmp = new AxWMPLib.AxWindowsMediaPlayer();
            wfh.Child = wmp;
            Main.Children.Add(wfh);
            this.wmp.uiMode = "none";
            this.wmp.Scale(new System.Drawing.SizeF(1, 1));
            this.wmp.stretchToFit = false;
            this.wmp.URL = System.IO.Path.GetFullPath("intro.mp4");
            this.wmp.Ctlcontrols.play();
            //System.Windows.Forms.MessageBox.Show(this.wmp.currentMedia.imageSourceWidth.ToString());
            this.wmp.Size = new System.Drawing.Size(this.wmp.currentMedia.imageSourceWidth, Convert.ToInt32(this.Height));
            wfh.Width = this.wmp.currentMedia.imageSourceWidth;
            this.wmp.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(player_PlayStateChange);
        }
Если не вызывается System.Windows.Forms.MessageBox.Show после this.wmp.Ctlcontrols.play(), Windows Media Player издаёт звуки, но не показывает видео. На экране всё, что находится за WindowsFormsHost. Если же вызвать диалоговое окно, пойдёт и картинка. Пожалуйста, подскажите, в чём может быть дело?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2020, 11:18
Ответы с готовыми решениями:

Windows media player
Здравствуйте. Пишу небольшой аудио-плеер (Last.fm, vk, etc), для воспроизведения музыки использую windows media player, и столкнулся с...

Screenshot из Windows Media Player средствами .NET или API Windows
Здравствуйте! Запарился искать в Инете, решил попробовать здесь спросить. Есть небольшой собственный проигрыватель написанный на C# с...

Windows Media Player не освобождает файл
Создаю плеер: private WindowsMediaPlayer wmp = new WindowsMediaPlayer(); После работы делаю следующее: wmp.controls.stop(); ...

4
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,119
Записей в блоге: 2
19.01.2020, 12:54
danilasar, не понял вашей реализованной идеи.
Что вы собственно хотите реализовать?
Для чего вам в WPF нужен WinForms?
1
1 / 1 / 0
Регистрация: 09.01.2017
Сообщений: 55
19.01.2020, 19:49  [ТС]
Элемент Windows Media Player доступен только для WinForms, соответственно из-под Presentation Framework приходится использовать хост WF.
Я хочу реализовать небольшой вводный ролик (intro) к своей программе. Изначально пользовался MediaElement, сейчас решил перейти или на WMP, или на VLC. Остановился на первом варианте.
Алгоритм такой:
1) Запускается программа
2) Создаётся WindowsFormsHost
3) Создаётся AxWindowsMediaPlayer и помещается в WindowsFormsHost
4) Включается вводный ролик
5) Размер плеера адаптируется под размер окна с учётом возможной разницы в отношениях сторон
6) Вводный ролика заканчивается
7) Удаляется и плеер, и WinFormsHost.

Добавлено через 1 минуту
Кажется, нашёл источник проблемы. this.wmp.currentMedia.imageSourceWidth возвращает 0. Попробовал установить длину плеера в 100px, всё пошло.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,119
Записей в блоге: 2
19.01.2020, 20:05
Лучший ответ Сообщение было отмечено danilasar как решение

Решение

Цитата Сообщение от danilasar Посмотреть сообщение
Элемент Windows Media Player доступен только для WinForms
А MediaElement и MediaPlayer чем не устраивают?

Цитата Сообщение от danilasar Посмотреть сообщение
или на VLC
Посмотрите VLC player [WPF, GitHub, Элд Хасп]
1
1 / 1 / 0
Регистрация: 09.01.2017
Сообщений: 55
20.01.2020, 13:27  [ТС]
Именно с MediaElement я и начал работать, столкнулся с другой проблемой: воспроизведение аудиодорожки заканчивается раньше (примерно на середине), чем показ самого видео (звук вперёд картинки). Выяснил, что эта ошибка зависит от конкретной конфигурации ЭВМ, исправить не смог. Решил не рисковать и выбрал WMP.
Спасибо за ссылку, потренируюсь с VLC.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2020, 13:27
Помогаю со студенческими работами здесь

Интернет радио с Windows Media Player
Пилю программку, часть которой-интернет радио. Решил протестить как это работает, самый простой способ-WMP судя по всему Написал пять...

Управление Windows Media Player (пауза, изменить громкость)
Привет всем, подскажите можно ли на C# (WPF) управлять запущенным Windows Media Player (пауза, изменить громкость)?

Не воспроизводится видео в Windows Media Player
Добрый день, пишу наипростейшую программу для воспроизведения видео, решил использовать библиотеку Windows Media Player, все создал, все...

Windows Media Player 11
http://news.ferra.ru/images/121/121218.jpg В центре загрузки Microsoft появилась финальная версия популярного проигрывателя мультимедиа...

Windows media player
Где и какую функцию нужно нажать в Windоws media plаyer чтоб через порт vga, dvi транслировалось видео на монитор! У меня ноутбук.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru