首页 > 开发 > 综合 > 正文

基于C#的接口基础教程之六(4)

2024-07-21 02:17:52
字体:
来源:转载
供稿:网友
  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。
  • 下面是一个使用c# 映射媒体播放机com 对象的程序。
      
        程序清单2 demoncom.cs
      
      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 文件名");
      }
      }
      
        运行示例:
      
        若要显示影片示例 clock.avi,请使用以下命令:
      
      interop2 %windir%/clock.avi
      
        这将在屏幕上显示影片,直到按 enter 键停止。
    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表