aqui les subo el fuente de este formulario.. obviamente tiene referencias y otras clases instanciadas.. por lo que no funcionaría solo dandole copiar y pegar... pero al menos es una idea de lo que tengo
en este ya hace la reproduccion de archivos.. para el ejemplo utilizo un wmv.. pero podía ser un avi o un mpg o cualquiera con los codecs necesarios instalados para reproducir en el windows media player
espero que sea útil para alguien que ande buscando algo similar
saludos
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuartzTypeLib;
namespace sistema
{
public partial class frm_tv : Form
{
private const int WS_CHILD = 0x40000000;
private const int WS_CLIPCHILDREN = 0x2000000;
private OpenFileDialog obj_ofd = new OpenFileDialog();
private FilgraphManager obj_fgm = null;
private IVideoWindow obj_ivw = null;
private IMediaControl obj_imc = null;
private int x_mensaje_id = 0;
private string x_mensaje = "";
private bool x_bandera_mensaje = false;
public frm_tv()
{
InitializeComponent();
}
frm_turno frm_turno = new frm_turno();
DataTable obj_dt = new DataTable();
private void frm_tv_Load(object sender, EventArgs e)
{
lbl_fecha.Text = "";
lbl_hora.Text = "";
lbl_ticket_1.Text = "";
lbl_ticket_2.Text = "";
lbl_ticket_3.Text = "";
lbl_ticket_4.Text = "";
lbl_ticket_5.Text = "";
lbl_mensajes.Text = "";
tmr_fecha.Enabled = true;
tmr_mensajes.Enabled = true;
pan_tv.Width = this.Width - pan_tv.Left - 30;
pan_tv.Height = this.Height - pan_tv.Top - 140;
pan_mensajes.Top = pan_tv.Height + 30;
pan_mensajes.Width = this.Width - pan_mensajes.Left - 30;
pan_tickets.Height = this.Height - pan_mensajes.Height - pan_tickets.Top - 40;
fx_distribuir_tickets();
fx_obtener_tickets();
tmr_tickets.Enabled = true;
lbl_mensajes.Width = pan_mensajes.Width - 20;
obj_ofd.FileName = "c:\\sistema\\video.wmv";
obj_fgm = new FilgraphManager();
obj_fgm.RenderFile(obj_ofd.FileName);
try
{
obj_ivw = obj_fgm as IVideoWindow;
obj_ivw.Owner = (int)pan_tv.Handle;
obj_ivw.WindowStyle = WS_CHILD | WS_CLIPCHILDREN;
obj_ivw.SetWindowPosition(pan_tv.ClientRectangle.Left,
pan_tv.ClientRectangle.Top,
pan_tv.ClientRectangle.Width,
pan_tv.ClientRectangle.Height);
}
catch (Exception)
{
obj_ivw = null;
}
obj_imc = obj_fgm as IMediaControl;
obj_imc.Run();
tmr_turno.Enabled = true;
}
private void tmr_fecha_Tick(object sender, EventArgs e)
{
lbl_fecha.Text = DateTime.Now.ToString("dd-MM-yyyy");
lbl_hora.Text = DateTime.Now.ToString("hh:mm:ss tt").ToUpper();
}
private void tmr_mensajes_Tick(object sender, EventArgs e)
{
if (x_bandera_mensaje == false)
{
lbl_mensajes.Left = pan_mensajes.Width;
tmr_mensajes.Enabled = false;
bool x_resultado = fx_obtener_mensajes(x_mensaje_id);
if (x_resultado == false)
{
if (x_mensaje_id == 0)
{
tmr_pausa.Enabled = true;
}
else
{
x_mensaje_id = 0;
tmr_mensajes.Enabled = true;
}
}
else
{
lbl_mensajes.Text = x_mensaje;
x_bandera_mensaje = true;
tmr_mensajes.Enabled = true;
}
}
if (x_bandera_mensaje == true)
{
lbl_mensajes.Left -= 1;
if (lbl_mensajes.Left <= lbl_mensajes.Width * -1)
{
x_bandera_mensaje = false;
}
}
}
private void tmr_pausa_Tick(object sender, EventArgs e)
{
x_mensaje_id = 0;
tmr_mensajes.Enabled = true;
tmr_pausa.Enabled = false;
}
private bool fx_obtener_mensajes(int p_mensaje_id)
{
string x_sql = "EXECUTE sp_obtener_mensajes " +
p_mensaje_id.ToString();
obj_dt = conexion.fx_sql(x_sql);
if (obj_dt == null)
{
return false;
}
if (obj_dt.Rows.Count == 0)
{
obj_dt.Dispose();
return false;
}
else
{
DataRow obj_dr = obj_dt.Rows[0];
x_mensaje_id = int.Parse(obj_dr["mensaje_id"].ToString());
x_mensaje = obj_dr["mensaje"].ToString();
obj_dr = null;
obj_dt.Dispose();
return true;
}
}
private void fx_distribuir_tickets()
{
int l_cantidad = 5;
int l_tamanio = lbl_ticket_1.Height;
int l_total = pan_tickets.Height;
int l_tickets = l_cantidad * l_tamanio;
int l_espacios = l_total - l_tickets;
int l_espacio = Convert.ToInt32(l_espacios / (l_cantidad + 1));
lbl_ticket_1.Top = l_espacio;
lbl_ticket_2.Top = (l_espacio * 2) + l_tamanio;
lbl_ticket_3.Top = (l_espacio * 3) + (l_tamanio * 2);
lbl_ticket_4.Top = (l_espacio * 4) + (l_tamanio * 3);
lbl_ticket_5.Top = (l_espacio * 5) + (l_tamanio * 4);
}
private bool fx_obtener_tickets()
{
lbl_ticket_1.Text = "";
lbl_ticket_2.Text = "";
lbl_ticket_3.Text = "";
lbl_ticket_4.Text = "";
lbl_ticket_5.Text = "";
string x_sql = "EXECUTE sp_obtener_tickets";
obj_dt = conexion.fx_sql(x_sql);
if (obj_dt == null)
{
return false;
}
if (obj_dt.Rows.Count == 0)
{
obj_dt.Dispose();
return false;
}
else
{
for (int i = 0; i < obj_dt.Rows.Count; i++)
{
DataRow obj_dr = obj_dt.Rows[i];
string x_ticket = obj_dr["ticket"].ToString();
switch (i)
{
case 0:
{
lbl_ticket_1.Text = x_ticket;
break;
}
case 1:
{
lbl_ticket_2.Text = x_ticket;
break;
}
case 2:
{
lbl_ticket_3.Text = x_ticket;
break;
}
case 3:
{
lbl_ticket_4.Text = x_ticket;
break;
}
case 4:
{
lbl_ticket_5.Text = x_ticket;
break;
}
}
obj_dr = null;
obj_dt.Dispose();
}
return true;
}
}
private void tmr_tickets_Tick(object sender, EventArgs e)
{
fx_obtener_tickets();
}
private void fx_salir()
{
obj_imc.Stop();
obj_imc = null;
obj_ivw = null;
obj_fgm = null;
obj_ofd = null;
tmr_fecha.Enabled = false;
tmr_mensajes.Enabled = false;
tmr_pausa.Enabled = false;
tmr_tickets.Enabled = false;
this.Close();
}
private void fx_anunciar()
{
tmr_turno.Enabled = false;
string x_sql = "EXECUTE sp_anunciar_tickets";
DataTable obj_dt_turno = new DataTable();
obj_dt_turno = conexion.fx_sql(x_sql);
if (obj_dt_turno == null)
{
tmr_turno.Enabled = true;
return;
}
if (obj_dt_turno.Rows.Count == 0)
{
obj_dt_turno = null;
tmr_turno.Enabled = true;
return;
}
else
{
for (int i = 0; i < obj_dt_turno.Rows.Count; i++)
{
DataRow obj_dr = obj_dt_turno.Rows[i];
string x_ticket = obj_dr["ticket"].ToString();
string x_ubicacion = obj_dr["ubicacion"].ToString();
frm_turno.lbl_ticket.Text = x_ticket;
frm_turno.lbl_nombre.Text = x_ubicacion;
frm_turno.ShowDialog();
}
tmr_turno.Enabled = true;
}
}
private void tmr_turno_Tick(object sender, EventArgs e)
{
fx_anunciar();
}
private void pic_logo_Click(object sender, EventArgs e)
{
fx_salir();
}
}
}