Exemple d'utilisation d'un ocx sans declaration prealable dans le projet

Contenu du snippet

Dans cette exemple , j'ai creer un object WebRadio ou est chargé l'OCX "WMPlayer.OCX" dynamiquement

l'OCX n'est pas incorporré dans le projet.

j'ai ajouté les Methodes play , pause , stop
ainsi qu'in exemple montrant comment change la propriété de sttin.autostart

Source / Exemple :


public class WebRadio
    {
        /*

  • Type de l'OCX
  • /
private Type typeOcx; /*
  • pointeur d'instance
  • /
private object instance; /*
  • pointer sur l'object 'settings' de WMPlayer.OCX
  • utilisé pour AutoStart
  • /
private object setting; /*
  • Type de l'object setting
  • /
private Type typeSetting; /*
  • pointeur sur l'object 'Controls' de WMPlayer.OCX
  • /
private object controls; /*
  • Type de l'object controls
  • /
private Type typeControls; /*
  • constructeur
  • /
public WebRadio(Boolean auto) { /*
  • recuperatition du type de l'OCX par son nom
  • /
typeOcx = Type.GetTypeFromProgID("WMPlayer.OCX"); /*
  • creation de l'instance
  • /
instance = Activator.CreateInstance(typeOcx); /*
  • creation de l'object 'setting' par invocation du membre
  • de l'instance
  • /
setting = typeOcx.InvokeMember("settings", BindingFlags.Public | BindingFlags.GetProperty, null, instance, null); typeSetting = setting.GetType(); /*
  • creation de l'object 'controls' par invocation du membre
  • de l'instance
  • /
controls = typeOcx.InvokeMember("Controls", BindingFlags.Public | BindingFlags.GetProperty, null, instance, null); typeControls = controls.GetType(); /*
  • appliquation de l'autostart
  • /
AutoStart = auto; } public Boolean AutoStart { set { object[] args = new Object[1]; args[0] = value; typeSetting.InvokeMember("autoStart", BindingFlags.Public | BindingFlags.SetProperty, null, setting, args); } } public String Url { set { object[] args = new Object[1]; args[0] = value; typeOcx.InvokeMember("URL", BindingFlags.Public | BindingFlags.SetProperty, null, instance, args); } } /*
  • Lecture
  • /
public void Play() { typeControls.InvokeMember("Play", BindingFlags.Public | BindingFlags.InvokeMethod, null, controls, null); } /*
  • Stop
  • /
public void Stop() { typeControls.InvokeMember("Stop", BindingFlags.Public | BindingFlags.InvokeMethod, null, controls, null); } /*
  • Pause
  • /
public void Pause() { typeControls.InvokeMember("Pause", BindingFlags.Public | BindingFlags.InvokeMethod, null, controls, null); } }

Conclusion :


WebRadio radio = new WebRadio(false);
radio.Url = "http://xplosive-radio.urban-radio.fr/form/xplosive-radio.asx";
radio.Play();
radio.Stop();

A voir également