2012-05-29 16 views
8

प्रोग्रामेटिक रूप से विंडोज मीडिया प्लेयर नियंत्रण बनाने की कोशिश कर रहा है, इसलिए मैं किसी भी प्रारंभिक त्रुटियों को जाल कर सकता हूं। इससे पहले कि जब मैंने अपने फॉर्म पर नियंत्रण छोड़ दिया, सब कुछ ठीक खेला। लेकिन अब जब मैं प्रोग्रामिंग रूप से चीजों को चलाने की कोशिश कर रहा हूं, तो वीडियो नियंत्रण में नहीं दिख रहा है। मुझे केवल काले वीडियो दिखाई देता है लेकिन मैं ऑडियो सुनता हूं।विंडोज मीडिया प्लेयर वीडियो काला है अगर नियंत्रण प्रोग्रामेटिक रूप से

कोई विचार?

public TrimVideoControl() 
    { 
     InitializeComponent(); 

     // Try creating WMP control 
     // We do this here so we can gracefully catch errors if the control doesn't load 
     try 
     { 

      wmPlayer = new AxWMPLib.AxWindowsMediaPlayer(); 
      ((System.ComponentModel.ISupportInitialize)(wmPlayer)).BeginInit(); 
      //SuspendLayout(); 
      wmPlayer.CreateControl(); 
      wmPlayer.Name = "wmPlayer"; 
      wmPlayer.Ctlenabled = true; 
      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TrimVideoControl)); 
      wmPlayer.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("wmPlayer.OcxState"))); 
      wmPlayer.Location = new Point(12, 13); 
      wmPlayer.Size = new Size(636, 358); 
      wmPlayer.enableContextMenu = true; 
      wmPlayer.stretchToFit = true; 
      wmPlayer.uiMode = "none"; 
      wmPlayer.settings.autoStart = false; 
      wmPlayer.ErrorEvent += wmPlayer_ErrorEvent; 
      wmPlayer.MediaChange += wmPlayer_MediaChange; 
      wmPlayer.MediaError += wmPlayer_MediaError; 
      wmPlayer.OpenStateChange += wmPlayer_OpenStateChange; 
      wmPlayer.PlayStateChange += wmPlayer_PlayStateChange; 
      wmPlayer.Warning += wmPlayer_Warning; 
      this.Controls.Add(wmPlayer); 
      ((System.ComponentModel.ISupportInitialize)(wmPlayer)).EndInit(); 

      //this.ResumeLayout(false); 
      //this.PerformLayout(); 
      //wmPlayer.Show(); 
      //wmPlayer.BringToFront(); 
     } 
     catch (Exception ex) 
     { 
      Logger.Error("Error creating WMP control: " + ex); 
     } 


    } 

उत्तर

10

MediaPalyer क्रम निर्माण के साथ सटीक समस्या तथ्य यह है कि हम घटक से पहले MediaPlayer के राज्य की कोई भी परिवर्तन (यूआरएल/uimode आदि जैसे किसी भी सेटिंग) पूरी तरह से शुरू कर दिया गया है निष्पादित नहीं कर सकता है। वीएस-डिजाइनर धारावाहिक घटक का राज्य AxHost.State ऑब्जेक्ट के रूप में और किसी भी अन्य सेटिंग्स को प्रभावित नहीं करता है। रनटाइम पर आप निम्न दृष्टिकोण का उपयोग कर सकते हैं:

void AddMediaPlayer(string url) { 
    try { 
     var wmPlayer = new AxWMPLib.AxWindowsMediaPlayer(); 

     ((System.ComponentModel.ISupportInitialize)(wmPlayer)).BeginInit(); 
     wmPlayer.Name = "wmPlayer"; 
     wmPlayer.Enabled = true; 
     wmPlayer.Dock = System.Windows.Forms.DockStyle.Fill; 
     this.Controls.Add(wmPlayer); 
     ((System.ComponentModel.ISupportInitialize)(wmPlayer)).EndInit(); 

     // After initialization you can customize the Media Player 
     wmPlayer.uiMode = "none"; 
     wmPlayer.URL = url; 
    } 
    catch { } 
} 
+0

यह काम करता है! बहुत बहुत धन्यवाद। –