Как воспроизводить mp3 при запуске процесса в фоновом режиме в C # Windows Form - PullRequest
0 голосов
/ 12 марта 2012

Я пытаюсь использовать приложение формы вдов, которое выполняет процесс, который перенаправляет вывод C ++ exe в приложение C # в режиме реального времени.Перенаправленный вывод C ++ затем используется для запуска нескольких задач.Например: если перенаправленный вывод равен «playSong», он должен воспроизвести файл mp3.Перенаправление вывода C ++ работает нормально, так как я уже использовал его для запуска других задач, таких как открытие и закрытие окон формы, но только для воспроизведения mp3 он не работает, и код после этого, похоже, тоже работает.(Также я использую openCV в программе C ++, если это имеет значение для проблемы) Однако я попытался воспроизвести mp3 в другом проекте, не используя какой-либо процесс, и там mp3 проигрывается нормально.Было бы здорово, если бы кто-нибудь мог мне помочь с этим, и вот как я пытался.

using System.Diagnostics;
using System.Runtime.InteropServices;

public partial class frmPlayList : Form
{
    [DllImport("winmm.dll")]
    private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);

    public bool flag = true;
    static string varr2;

    public frmPlayList()
    {
        InitializeComponent();
    }
    private void frmPlayList_Load(object sender, EventArgs e)
    {
        Program.getProcess().OutputDataReceived += processOutputDataReceived2;
    }
    public void processOutputDataReceived(object sender, DataReceivedEventArgs e)
    {
        Console.WriteLine(e.Data);
        varr2 = e.Data;

        if (varr2 == "playSong" && flag)
        {
            playSong();
            flag = false;
        }
    }
    public delegate void UpdateControlsDelegate();

    public void playSong() //Playing song
    {
        InvokeUpdateControlsForPlaySong();
    }
    public void InvokeUpdateControlsForPlaySong()
    {
        if (this.InvokeRequired)
        {
            this.BeginInvoke(new UpdateControlsDelegate(UpdateControlsForPlaySong));
        }
        else
        {
            UpdateControlsForPlaySong();
        }
    }
    private void UpdateControlsForPlaySong()
    {
        string f = @"path\a.mp3";
        mciSendString("open \"" + f + "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
        mciSendString("play MediaFile", null, 0, IntPtr.Zero);
        Console.WriteLine("Song ended!");
    }
}

1 Ответ

0 голосов
/ 12 марта 2012

Почему вы не используете медиаплеер ?? просто спрячь это !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...