基于C#的接口基礎(chǔ)教程之六(4)
2024-07-21 02:17:52
供稿:網(wǎng)友
 
本文來源于網(wǎng)頁設(shè)計愛好者web開發(fā)社區(qū)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 //此類不能再繼承其它基類或接口 
  { 
  //這里不能有任何代碼 ,系統(tǒng)自動增加一個缺省的構(gòu)造函數(shù) 
  } 
  } 
  class mainclass 
  { 
  public static void main(string[] args) 
  { 
  //命令行參數(shù): 
  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; 
  // 調(diào)用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 鍵停止。