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
{
/*
private Type typeOcx;
/*
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;
/*
public WebRadio(Boolean auto)
{
/*
- recuperatition du type de l'OCX par son nom
- /
typeOcx = Type.GetTypeFromProgID("WMPlayer.OCX");
/*
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);
}
}
/*
public void Play()
{
typeControls.InvokeMember("Play", BindingFlags.Public | BindingFlags.InvokeMethod, null, controls, null);
}
/*
public void Stop()
{
typeControls.InvokeMember("Stop", BindingFlags.Public | BindingFlags.InvokeMethod, null, controls, null);
}
/*
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();