home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2005 June (DVD) / DPPRO0605DVD.iso / dotNETSDK / SETUP.EXE / netfxsd1.cab / FL_Homenet_cs________.3643236F_FC70_11D3_A536_0090278A1BB8 < prev    next >
Encoding:
Text File  |  2002-02-12  |  6.8 KB  |  231 lines

  1. /*=====================================================================
  2.  
  3.   File:      Homenet.cs
  4.  
  5. ---------------------------------------------------------------------
  6. This file is part of the Microsoft .NET Framework SDK Code Samples.
  7.  
  8.   Copyright (C) Microsoft Corporation.  All rights reserved.
  9.  
  10. This source code is intended only as a supplement to Microsoft
  11. Development Tools and/or on-line documentation.  See these other
  12. materials for detailed information regarding Microsoft code samples.
  13.  
  14. THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  15. KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  16. IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  17. PARTICULAR PURPOSE.
  18. =====================================================================*/
  19.  
  20. using System;
  21. using System.Text;
  22. using System.Runtime.InteropServices;
  23. using MediaPlayer;
  24.  
  25. namespace Homenet
  26. {
  27.     public delegate bool StatusUpdateCallback(String title);
  28.  
  29.     public class VCR : MarshalByRefObject
  30.     {
  31.         public VCR()
  32.         {
  33.             Console.WriteLine("VCR Constructor");
  34.         }
  35.  
  36.         MediaRequest _mediaRequest = null;
  37.  
  38.         public bool PlaySimple() 
  39.         {
  40.             Console.WriteLine("Play");
  41.  
  42.             try 
  43.             {
  44.                 if (null != mediaPlayer)
  45.                 {
  46.                     mediaPlayer.Play();
  47.                     return true;
  48.                 }
  49.             }
  50.             catch (COMException) 
  51.             { 
  52.                 // do nothing, the player was probably closed or not started yet
  53.             }
  54.  
  55.  
  56.             return false;
  57.         }
  58.  
  59.         public bool Play(String title) 
  60.         { 
  61.             Console.WriteLine("Play: {0}", title);
  62.             mediaPlayer = null;
  63.  
  64.             if (null == mediaPlayer)
  65.             {
  66.                 StartMediaPlayer();
  67.             }
  68.  
  69.             if (null != mediaPlayer)
  70.             {
  71.                 mediaPlayer.FileName = title;
  72.                 mediaPlayer.AutoRewind = true;
  73.                 mediaPlayer.AutoStart = false;
  74.                 mediaPlayer.Play();
  75.  
  76.                 Console.WriteLine("VCR Playing " + title);
  77.             }
  78.  
  79.             Console.WriteLine("VCR Playing " + title);
  80.  
  81.             return true;
  82.         }
  83.  
  84.         public bool PlayWithStatus(String title, BaseRemoteControl mediaStatus)
  85.         {
  86.             Play(title);
  87.             mediaStatus.StatusUpdate("Playing: " + title);
  88.             return true;
  89.         }
  90.  
  91.         public bool PlayWithStatus(String title, IMediaStatus mediaStatus)
  92.         {
  93.             Play(title);
  94.             mediaStatus.StatusUpdate("Playing: " + title);
  95.             return true;
  96.         }
  97.  
  98.         public bool PlayWithStatus(MediaRequest mediaRequest)
  99.         {
  100.             _mediaRequest = mediaRequest;
  101.             Console.WriteLine("PlayWithStatus: MBV with embedded MBR");
  102.  
  103.             if ((null != mediaRequest) && (null != mediaRequest._mediaStatus))
  104.                 return PlayWithStatus(mediaRequest._title, mediaRequest._mediaStatus);
  105.             else
  106.  
  107.                 return true;
  108.         }
  109.  
  110.         public bool PlayWithStatus(String title, StatusUpdateCallback callback)
  111.         {
  112.             Play(title);
  113.  
  114.             Console.WriteLine("PlayWithStatus: Delegate with MBR");
  115.  
  116.             if (null != callback)
  117.                 return callback(title);
  118.             else
  119.                 return true;
  120.         }
  121.  
  122.         public bool Pause() 
  123.         { 
  124.             Console.WriteLine("Pause");
  125.  
  126.             try
  127.             {
  128.                 if (null != mediaPlayer)
  129.                 {
  130.                     mediaPlayer.Pause();
  131.                 }
  132.             }
  133.             catch (COMException) 
  134.             { 
  135.                 // do nothing, the player was probably closed or not started yet
  136.             }
  137.             return true;
  138.         }
  139.  
  140.         public bool Stop() 
  141.         { 
  142.             Console.WriteLine("Stop");
  143.           
  144.             try
  145.             {
  146.                 if (null != mediaPlayer)
  147.                 {
  148.                     mediaPlayer.Stop();
  149.                     mediaPlayer.CurrentPosition = 0;
  150.                 }
  151.             }
  152.             catch (COMException) 
  153.             { 
  154.                 // do nothing, the player was probably closed or not started yet
  155.             }
  156.  
  157.             return true;
  158.         }
  159.  
  160.         // MediaPlayer
  161.         private static Guid MediaPlayerCLSID = new Guid("22D6F312-B0F6-11D0-94AB-0080C74C7E95");
  162.         private static Guid IID_MediaPlayer2 = new Guid("20D4F5E0-5475-11D2-9774-0000F80855E6");
  163.         private static IMediaPlayer2 mediaPlayer = null;
  164.  
  165.         private void StartMediaPlayer()
  166.         {
  167.             IMediaPlayer2[] mediaPlayerArray = new IMediaPlayer2[1];
  168.  
  169.             CoCreateInstance(
  170.                             ref MediaPlayerCLSID, 
  171.                             null, 
  172.                             CLSCTX_LOCAL_SERVER, 
  173.                             ref IID_MediaPlayer2, 
  174.                             mediaPlayerArray);
  175.  
  176.             if (mediaPlayerArray[0] != null)
  177.             {
  178.                 mediaPlayer = mediaPlayerArray[0];
  179.             }
  180.         }
  181.  
  182.  
  183.         private const int CLSCTX_LOCAL_SERVER     = 4;
  184.  
  185.         [DllImport("Ole32.dll"), PreserveSig]
  186.         private static extern void CoCreateInstance(
  187.                                                    [In]
  188.                                                    ref Guid clsid,
  189.                                                    [MarshalAs(UnmanagedType.Interface)]
  190.                                                    object punkOuter,
  191.                                                    [MarshalAs(UnmanagedType.I4)]
  192.                                                    int context,
  193.                                                    [In]
  194.                                                    ref Guid iid,
  195.                                                    [In, Out, MarshalAs(UnmanagedType.LPArray)]
  196.                                                    IMediaPlayer2[] unknown);
  197.  
  198.         [DllImport("shell32.dll", CharSet = CharSet.Auto)]
  199.         private static extern IntPtr ShellExecute(IntPtr hwnd, String lpVerb, String lpFile, String lpParameters, String lpDirectory, int nShowCmd);
  200.     }
  201.  
  202.     public interface IMediaStatus
  203.     {
  204.         bool StatusUpdate(String status);
  205.     }
  206.  
  207.     public class BaseRemoteControl : MarshalByRefObject
  208.     {
  209.         public virtual bool StatusUpdate(String title)
  210.         {
  211.             return true;
  212.         }
  213.     }
  214.  
  215.     [Serializable]
  216.     public class MediaRequest
  217.     {
  218.         public MediaRequest(String title, BaseRemoteControl mediaStatus)
  219.         {
  220.             _title = title;
  221.             _mediaStatus = mediaStatus;
  222.         }
  223.  
  224.         public String _title;
  225.         //public IMediaStatus _mediaStatus;
  226.         public BaseRemoteControl _mediaStatus;
  227.     }
  228.  
  229. }
  230.  
  231.