Announcement

Collapse
No announcement yet.

Windows Media Player

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Windows Media Player

    Hallo alle zusammen,

    ich habe da ein kleines Probelm.

    Ich versuche per C# den Windows Media Player zu steuern. Im Grunde will ich nur so Funktionen wie Play, Stop, Next etc. pp. anbieten. Wenn ihr euch jetzt Fragt was das bringt und wieso ich nicht einfach auf die Play und Stop Taste vom wmPlayer drücke, eine kleine Erklärung zum Hintergrund der Frage

    Ich versuche nämlich von einem Programm das auf einem Windows Mobile Handy ist den wmPlayer zu steuern (jetzt haltet ihr mich Hoffentlich nicht mehr für Durchgeknallt)

    Ich hoffe ihr könnt mir Helfen.

  • #2
    Musst Du den vorhandenen Media Player steuern oder geht auch ein eigener mit mciSendString? Die Funktion sollte auf WIndows Mobile so viel ich weiss vorhanden sein. Sprichst DU so an aus C#:
    Code:
    public class MP3Player
            {
                
                private string _Alias;
    
                public MP3Player(string pAlias)
                {
                    this._Alias = pAlias;
                }
    
                public bool Play(string pFileName)
                {
                    bool ret = false;
                    StringBuilder retApi = new StringBuilder(new string(' ', 256));
                    if (GetShortPathName(pFileName, retApi, retApi.Length) > 0)
                    {
                        //MCI öffnen
                        int intMciResult = mciSendString(string.Format("open {0} type MPEGVideo alias {1}", retApi.ToString(), this._Alias), string.Empty, 0, IntPtr.Zero);
    
                        int intPlayResult = -1;
                        if (intMciResult == 0)
                        {
                            //MP3 Play
                            intPlayResult = mciSendString(string.Format("play {0} from 0", this._Alias), string.Empty, 0, IntPtr.Zero);
                        }
    
                        ret = intPlayResult == 0;
                    }
                    return ret;
                }
    
                public bool Stop()
                {
                    bool ret = false;
                    if (mciSendString(string.Format("stop {0}", this._Alias), string.Empty, 0, IntPtr.Zero) == 0)
                    {
                        ret = mciSendString(string.Format("close {0}", this._Alias), string.Empty, 0, IntPtr.Zero) == 0;
                    }
                    return ret;
                }
    
                public string GetLength()
                {
                    StringBuilder buffer = new StringBuilder(new string(' ', 256));
                    
                    string cmd = "status "+this._Alias+" length";
                    int errCode = mciSeek(cmd, buffer, 256, IntPtr.Zero);
                    return buffer.ToString();
                    
                   
                }
    
                public Single GetPos()
                {
                    StringBuilder buffer = new StringBuilder(new string(' ', 256));
    
                    string cmd = "Status " + this._Alias + " position";
                    int errCode = mciSeek(cmd, buffer, 256, IntPtr.Zero);
                    return Single.Parse(buffer.ToString());
                }
    
                public void SetPos(int position)
            {
                string cmd = "play " + this._Alias + " from " + position.ToString();
                mciSendString(cmd, string.Empty, 0, IntPtr.Zero);
            }
    
                public int pause()
                {
                    int ret;
                    ret=mciSendString(string.Format("stop {0}", this._Alias), string.Empty, 0, IntPtr.Zero);
                    return ret;
                }
    
                public int resume()
                {
                    int ret;
                    ret=mciSendString(string.Format("play {0}", this._Alias), string.Empty, 0, IntPtr.Zero);
                    return ret;
                }
                public int setvol(int v)
                {
                    string vol;
                    int ret;
                    v = v * 10;
                    vol = v.ToString();
                    ret=mciSendString (string.Format("setaudio {0}", this._Alias+ " volume to "+vol ), string.Empty, 0, IntPtr.Zero);
                    
                    return ret;
                }
                [DllImport("winmm.dll")]
                private static extern int mciSendString(string lpCommand, string lpReturn, int nReturnLength, IntPtr callBack);
                
                [DllImport("kernel32")]
                private static extern int GetShortPathName(string lpLongPath, StringBuilder lpShortPath, int Buffer);
    
                [DllImport("winmm.dll", EntryPoint = "mciSendStringA", 
               CharSet = CharSet.Ansi)]
    private static extern int mciSeek(
        string lpszCommand, StringBuilder lpszReturnString, 
        int cchReturn, IntPtr hwndCallback);
    
            }
        }
    Möglicherweise mciSendStringW statt A verwenden. Spielt nicht nur mp3 ab natürlich sondern alle Formate die vom Handy unterstützt werden.

    Verwendung der Klasse dann:

    Code:
    MP3Player _M = new MP3Player("myPlayer");
    ....
    _M.Play(filename);

    Comment

    Working...
    X