扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:黎宇授权 来源:论坛 2007年11月13日
关键字:
using System; using System.Runtime.InteropServices; namespace QuartzTypeLib { //声明一个COM接口 IMediaControl,此接口来源于媒体播放机COM类 [Guid("56A868B1-0AD4-11CE-B03A-0020AF0BA770"), InterfaceType(ComInterfaceType.InterfaceIsDual)] interface IMediaControl { //列出接口成员 void Run(); void Pause(); void Stop(); void GetState( [In] int msTimeout, [Out] out int pfs); void RenderFile( [In, MarshalAs(UnmanagedType.BStr)] string strFilename); void AddSourceFilter( [In, MarshalAs(UnmanagedType.BStr)] string strFilename, [Out, MarshalAs(UnmanagedType.Interface)] out object ppUnk); [return: MarshalAs(UnmanagedType.Interface)] object FilterCollection(); [return: MarshalAs(UnmanagedType.Interface)] object RegFilterCollection(); void StopWhenReady(); } //声明一个COM类: [ComImport, Guid("E436EBB3-524F-11CE-9F53-0020AF0BA770")] class FilgraphManager //此类不能再继承其它基类或接口 { //这里不能有任何代码 ,系统自动增加一个缺省的构造函数 } } class MainClass { public static void Main(string[] args) { //命令行参数: if (args.Length != 1) { DisplayUsage(); return; } String filename = args[0]; if (filename.Equals("/?")) { DisplayUsage(); return; } // 声明FilgraphManager的实类对象: QuartzTypeLib.FilgraphManager graphManager =new QuartzTypeLib.FilgraphManager(); //声明IMediaControl的实类对象:: QuartzTypeLib.IMediaControl mc =(QuartzTypeLib.IMediaControl)graphManager; // 调用COM的方法: mc.RenderFile(filename); //运行文件. mc.Run(); //暂借停. Console.WriteLine("Press Enter to continue."); Console.ReadLine(); } private static void DisplayUsage() { // 显示 Console.WriteLine("媒体播放机: 播放 AVI 文件."); Console.WriteLine("使用方法: VIDEOPLAYER.EXE 文件名"); } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者