public void Close() { if (objRun != null) { objRun.Cancel(); } if (mc != null) { mc.Stop(); mc = null; } if (graphManager != null) { graphManager.Stop(); graphManager = null; } wm = null; me = null; mp = null; if (objRun != null) { objRun.Cancel(); objRun.Stop(); objRun = null; } ctrlOwner = null; }
/********************************************************** * 摘要:此方法收集要显示的 AVI 的文件名, * 然后创建 Quartz COM 对象的实例。 * 为了显示 AVI,程序对 * IMediaControl 调用 RenderFile 和 Run。Quartz 使用自己的线程和窗口来显示 * AVI。主线程阻塞在 ReadLine 上,直到用户按 * Enter 键为止。 * 输入参数:要显示的 avi 文件的位置 * 返回值:void *************************************************************/ public static void Main(string[] args) { // 检查用户是否传入了文件名: if (args.Length != 1) { DisplayUsage(); return; } if (args[0] == "/?") { DisplayUsage(); return; } String filename = args[0]; // 检查文件是否存在 if (!System.IO.File.Exists(filename)) { Console.WriteLine("File " + filename + " not found."); DisplayUsage(); return; } // 创建 Quartz 的实例 // (Calls CoCreateInstance(E436EBB3-524F-11CE-9F53-0020AF0BA770, // NULL, CLSCTX_ALL, IID_IUnknown, // &graphManager).): try { QuartzTypeLib.FilgraphManager graphManager = new QuartzTypeLib.FilgraphManager(); // IMediaControl 接口的 QueryInterface: QuartzTypeLib.IMediaControl mc = (QuartzTypeLib.IMediaControl)graphManager; // 对 COM 接口调用某些方法。 // 将文件传递给 COM 对象上的 RenderFile 方法。 mc.RenderFile(filename); // 显示文件。 mc.Run(); } catch (Exception ex) { Console.WriteLine("Unexpected COM exception: " + ex.Message); } // 等待完成。 Console.WriteLine("Press Enter to continue."); Console.ReadLine(); }
/************************************************************ * Аннотация. Этот метод находит имя AVI-файла для воспроизведения, * а затем создает экземпляр COM-объекта Quartz. * Чтобы воспроизвести AVI-файл, программа вызывает методы RenderFile и Run из * IMediaControl. Quartz использует свои собственные поток и окно для воспроизведения * AVI-файла. Главный поток заблокирован на ReadLine до тех пор, пока пользователь не нажмет клавишу * ВВОД. * Входные параметры: место размещения avi-файла, предназначенного для воспроизведения * Возвращает: void **************************************************************/ public static void Main(string[] args) { // Проверка передачи пользователем имени файла: if (args.Length != 1) { DisplayUsage(); return; } if (args[0] == "/?") { DisplayUsage(); return; } String filename = args[0]; // Проверка наличия файла if (!System.IO.File.Exists(filename)) { Console.WriteLine("File " + filename + " not found."); DisplayUsage(); return; } // Создание экземпляра Quartz // (Calls CoCreateInstance(E436EBB3-524F-11CE-9F53-0020AF0BA770, // NULL, CLSCTX_ALL, IID_IUnknown, // &graphManager).): try { QuartzTypeLib.FilgraphManager graphManager = new QuartzTypeLib.FilgraphManager(); // QueryInterface для интерфейса IMediaControl: QuartzTypeLib.IMediaControl mc = (QuartzTypeLib.IMediaControl)graphManager; // Вызов некоторых методов COM-интерфейса // Передача файла в метод RenderFile COM-объекта. mc.RenderFile(filename); // Показать файл. mc.Run(); } catch (Exception ex) { Console.WriteLine("Unexpected COM exception: " + ex.Message); } // Дождитесь завершения. Console.WriteLine("Press Enter to continue."); Console.ReadLine(); }
/********************************************************** * Abstract: This method collects the filename of an AVI to show * then creates an instance of the Quartz COM object. * To show the AVI, the program calls RenderFile and Run on * IMediaControl. Quartz uses its own thread and window to * display the AVI. The main thread blocks on a ReadLine until * the user presses ENTER. * Input Parameters: the location of the avi file it is going to display * Returns: void *************************************************************/ public static void Main(string[] args) { // Check to see if the user passed in a filename: if (args.Length != 1) { DisplayUsage(); return; } if (args[0] == "/?") { DisplayUsage(); return; } String filename = args[0]; // Check to see if the file exists if (!System.IO.File.Exists(filename)) { Console.WriteLine("File " + filename + " not found."); DisplayUsage(); return; } // Create instance of Quartz // (Calls CoCreateInstance(E436EBB3-524F-11CE-9F53-0020AF0BA770, // NULL, CLSCTX_ALL, IID_IUnknown, // &graphManager).): try { QuartzTypeLib.FilgraphManager graphManager = new QuartzTypeLib.FilgraphManager(); // QueryInterface for the IMediaControl interface: QuartzTypeLib.IMediaControl mc = (QuartzTypeLib.IMediaControl)graphManager; // Call some methods on a COM interface. // Pass in file to RenderFile method on COM object. mc.RenderFile(filename); // Show file. mc.Run(); } catch (Exception ex) { Console.WriteLine("Unexpected COM exception: " + ex.Message); } // Wait for completion. Console.WriteLine("Press Enter to continue."); Console.ReadLine(); }
private void play(string args) { m_FilterManager = new QuartzTypeLib.FilgraphManager(); // m_FilterManager.RenderFile(args); //设置待播放文件 m_VideoWindow = m_FilterManager as QuartzTypeLib.IVideoWindow; //设置播放窗体 m_VideoWindow.Owner = (int)(this.panel1.Handle); m_VideoWindow.WindowStyle &= ~WS_BORDER; m_VideoWindow.SetWindowPosition(0, 0, this.panel1.Width, this.panel1.Height); m_MediaEvent = m_FilterManager as QuartzTypeLib.IMediaEvent; //设置媒体事件 m_MediaEventEx = m_FilterManager as QuartzTypeLib.IMediaEventEx; //设置媒体事件扩展 m_MediaPos = m_FilterManager as QuartzTypeLib.IMediaPosition; //设置媒体位置 m_MediaCtrl = m_FilterManager as QuartzTypeLib.IMediaControl; //设置媒体控制器 }
private void cmdPlay_Click(object sender, EventArgs e) { if (mc == null) { // This audio is being played for the first time. // Load the file. // Access the IMediaControl interface. graphManager = new QuartzTypeLib.FilgraphManager(); mc = (QuartzTypeLib.IMediaControl)graphManager; audio = (QuartzTypeLib.IBasicAudio)graphManager; position = (QuartzTypeLib.IMediaPosition)graphManager; mEventEx = (QuartzTypeLib.IMediaEventEx)graphManager; try { // Choose a file. mc.RenderFile(Application.StartupPath + "\\test.mp3"); mEventEx.SetNotifyWindow((int)this.Handle, WM_GRAPHNOTIFY, 0); } catch (FileNotFoundException err) { MessageBox.Show("File not found."); return; } catch (COMException err) { MessageBox.Show("COM error."); return; } } // Start playing the audio asynchronously. try { statusLabel1.Text = "Total: " + ConvertTimeToString((int)position.Duration); mc.Run(); timer1.Start(); } catch (COMException err) { MessageBox.Show("COM error."); } }
private void initMCI() { graphManager = new QuartzTypeLib.FilgraphManagerClass(); VideoPosition = new System.Drawing.Point(0, 0); ManualSize = new System.Drawing.Size(100, 100); VideoAllign = System.Drawing.ContentAlignment.MiddleCenter; // QueryInterface for the IMediaControl interface: mc = (QuartzTypeLib.IMediaControl)graphManager; wm = (QuartzTypeLib.IVideoWindow)graphManager; me = (QuartzTypeLib.IMediaEvent)graphManager; mp = (QuartzTypeLib.IMediaPosition)graphManager; if (objRun != null) { objRun.Stop(); objRun = null; } bLoaded = false; }