Не удалось запустить процесс в дочерней форме из родительской формы - PullRequest
0 голосов
/ 28 августа 2011

Я разрабатываю приложение с двумя формами. Родительская форма содержит список (видео) имен файлов, а в другой форме (дочерняя) я запускаю процесс (используя mplayer), чтобы показать соответствующее видео.

Моя цель - запустить видео в дочерней форме после нажатия на имя файла (просмотр списка) в моей основной (родительской) форме. Форма видео должна быть «плавающим окном». Поэтому не встраивается в основную форму как MDI-форма !!

Когда я запускаю проигрыватель в видео-форме (дочерняя) напрямую, все работает нормально (имя файла доступно из основной формы), и видео отображается в видео-форме. (кнопка запуска вызывает метод OpenFile ())

Когда я пытаюсь запустить видео из основной формы, видео запускается, но не отображается в форме видео (я слышу музыку)

frmVideo formVideo = new frmVideo();
formVideo.OpenFile();

Я предполагаю, что что-то не так с дескриптором между основной формой и формой видео.

public void OpenFile()
    {
        //
        try
        {
            ps = new Process();

            //Path of Mplayer exe
            ps.StartInfo.FileName = @"C:\Program Files\SMPlayer\mplayer\mplayer.exe";

            ps.StartInfo.UseShellExecute = false;
            ps.StartInfo.CreateNoWindow = true;

            ps.StartInfo.RedirectStandardInput = true;
            args = "-nofs -noquiet -identify -slave ";
            args += "-nomouseinput -sub-fuzziness 1 ";

            //-wid will tell MPlayer to show output inisde our panel
            args += " -vo direct3d, -ao dsound  -wid ";
            int id = (int)panel1.Handle;
            args += id;

            //
            string filename = Form1.videoFile;  //file name from my main form

            // start player,
            ps.StartInfo.Arguments = args + " \"" + filename + "\"";
            ps.Start();

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