quarta-feira, 2 de dezembro de 2009
MP3 player com DirectX
Windows XP com framework 2.0 ou superior
DirectX
Visual Studio 2008 ou compatível
1º Instalar Microsoft DirectX SDK (June 2006) ou compatível
Vamos lá pessoal, algum dia na vida qualquer um aqui já tentou executar um MP3
utilizando .NET correto? Aí vamos lá e adicionamos um objeto SoundPlayer do namespace
System.Media, quando utilizávamos o método Play()! PAN! Não é possível executar o arquivo
pois o SoundPlayer não suporta o MP3. Utilizaremos o DirectX para nos auxiliar com isso, para
isso a primeiro que devemos fazer é baixar DirectX Software Development Kit no site do
Microsoft através do link
http://www.microsoft.com/downloads/details.aspx?FamilyID=1fd20df1-dec6-47d0-8bef-
10e266dfdab8&DisplayLang=en, apenas 443 MB.
No meu caso eu tive que executar um mp3 em um dashboard de Call Center, o cliente
queria colocar um telão no Call Center com (o gerente desse projeto foi mandado embora
antes da conclusão do projeto, então essa parte do telão não rolou... vai vendo rsrs) e toda vez
em que o nível de atendimento estava abaixo no mínimo aceitável o sistema tinha que tocar
uma sirene, bem fizemos um esquema para ler wav, mas nossa vontade era fazer com mp3!!!
Coisas de desenvolvedor, bem fizemos, mas não foi para produção, não deu tempo, não
importa, esse treco aqui funciona.
2º Criar um projeto Windows Forms Application
Agora com o DirectX SDK crie um novo projeto do tipo Windows Forms Application
com o nome que você achar melhor, bem, não mostrar com usar o OpenFileDialog, isso fica
para outro artigo.
3º Adicionar as referências
Vá ao menu “Project”, clique em “Add Reference”, na aba “.NET”, adicione as
referencias “Microsoft.DirectX” e “Microsoft.DirectX.AudioVideoPlayback”.
4º Adicionar caminho do mp3
Dê um clique duplo no formulário, agora no método Form_Load, crie uma variável do
tipo string com o nome musica e sete o valor dela como o caminho para o seu arquivo mp3
(pois é, um arquivo mp3!!!! Hehe).
5º Adicionar objeto Microsoft.DirectX.AudioVideoPlayback.Audio
Adicione um objeto do tipo Audio (Microsoft.DirectX.AudioVideoPlayback.Audio) com
o nome audio, instancie audio como um novo Audio, e passe como parâmetro o objeto musica
no construtor.
6º Executar “Play”
Agora execute o método “Play” do objeto audio.
7º Código fonte
Abaixo estão os códigos fonte em VB.NET e C#(Sharp).
VB.NET
Imports Microsoft.DirectX.AudioVideoPlayback
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim musica As String = "C:\Documents and Settings\oscar\Meus
documentos\Minhas músicas\Top Gun - Danger Zone.mp3"
Dim audio As Audio
audio = New Audio(musica)
audio.Play()
End Sub
End Class
C#(Sharp)
using System;
using System.Windows.Forms;
using Microsoft.DirectX.AudioVideoPlayback;
namespace DirectXPlayer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string musica = @"C:\Documents and Settings\oscar\Meus
documentos\Minhas músicas\Top Gun - Danger Zone.mp3";
Audio music;
music = new Audio(musica);
music.Play();
}
}
}
Referencias
http://msdn.microsoft.com/en-us/directx/aa937788.aspx
http://msdn.microsoft.com/en-us/directx/default.aspx
http://msdn.microsoft.com/en-us/aa937791.aspx
Pessoal, é só isso, como vocês podem ver é super fácil, espero que tenha agregado
conhecimento. Até a próxima.
segunda-feira, 23 de novembro de 2009
Galeria de fotos com WPF
Windows XP com Framework .NET 3.0 ou superior para rodar a aplicação
Visual Studio 2008 ou compatível
1º Crie uma aplicação do tipo WPF Application
2º No XAML, na tag Windows, mude o atributo title para Galeria de fotos
3º Adicione as bibliotecas System.IO e System com as seguintes linhas
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:io="clr-namespace:System.IO;assembly=mscorlib"
4º Adicione os resources da aplicação com as seguintes linhas, é de onde as fotos serão lidas, entenda o primeiro s:String como local de suas imagens, o segundo é o filtro dos arquivos que serão lidos pela aplicação, mas já vou te explicar que ObjectType é o tipo do objeto que está sendo instanciado pelo ObjectDataProvider e o MethodName é o método desse objetos que será executado, o resto é tranqüilo.
5º Após o Windows.Resources adicione um DockPanel com o atributo LastChildFill setado como True
6º Dentro do DockPanel adicione um ListBox com os seguintes atributos x:Name="imageList", DockPanel.Dock="Top", ItemsSource="{Binding}", IsSynchronizedWithCurrentItem="True" e DataContext="{StaticResource imagens}".
7º Dentro do ListBox coloque as seguintes tag
Super tranqüilo.
Referencias.
http://windowsclient.net/wpf/
http://msdn.microsoft.com/pt-br/library/cc564903.aspx
http://msdn.microsoft.com/en-us/library/ms754130.aspx
quarta-feira, 18 de novembro de 2009
FileWatcher - Observador de arquivos
1º Crie um projeto do tipo Windows Forms Applications.
2º Adicione uma classe com o nome FileWatcher.
3º Crie uma variável do tipo string, privada com o nome pasta.
private string pasta = @"d:\teste";
4º Crie o construtor da classe conforme abaixo.
public FileWatcher()
{
FileSystemWatcher WatchFile = new FileSystemWatcher(pasta, "*.txt");
WatchFile.Created += new FileSystemEventHandler(this.FileCreated);
WatchFile.EnableRaisingEvents = true;
}
5º Agora vamos criar o método Created, faça conforme abaixo. Esse método irá copiar o arquivo de D:\Teste para D:\Teste2 e xcluí-lo da origem
public void FileCreated(object sender, FileSystemEventArgs e)
{
Console.WriteLine(e.Name);
FileInfo fileInfo = new FileInfo(e.Name);
string pastaOrigem = @"D:\Teste";
string pastaDestino = @"D:\Teste2";
string arquivoOrigem = Path.Combine(pastaOrigem, fileInfo.Name);
string arquivoDestino = Path.Combine(pastaDestino, fileInfo.Name);
if (File.Exists(arquivoDestino))
File.Delete(arquivoDestino);
File.Copy(arquivoOrigem, arquivoDestino);
Log(arquivoOrigem, arquivoDestino);
}
private void Log(string preCondicao, string posCondicao)
{
string arquivoLog = Path.Combine(pasta, string.Format("{0}log.txt", string.Format("{0:yyyyMMdd}", DateTime.Now)));
StreamWriter arquivoEscrita = new StreamWriter(arquivoLog, true);
arquivoEscrita.WriteLine(string.Format("{0}|{1}|{2}", preCondicao, posCondicao, DateTime.Now));
arquivoEscrita.Close();
arquivoEscrita.Dispose();
}
7º Instancie um novo FileWacther no Load do formulário.
8º Vamos testar agora, crie uma pasta chamada Teste e uma pasta Teste2, execute a aplicação e crie um arquivo texto (txt) em Teste, veja que o arquivo sumiu! E um novo arquivo chamado AAAAMMDDlog.txt foi criado, esse arquivo contém as informações do nome do arquivo de origem, nome do arquivo destino e data/hora em que ele foi movido. Se você verificar em Teste2 o arquivo estará lá.
OBS: Atenção aos caminhos das pastas, caso não tenha um diretóro D:, coloque no lugar que lhe parecer melhor.
Até a próxima.
quarta-feira, 4 de novembro de 2009
PDF com C# (C SHARP)
2º Crie um projeto windows forms
3º Adicione a referência da biblioteca no projeto
4º Adicione a seguinte linha no projeto
using Root.Reports;
5º No método Load do formulário adicione o seguinte código
String arquivo = @"c:\teste.pdf";
if (System.IO.File.Exists(arquivo))
System.IO.File.Delete(arquivo);
Report report = new Report();
Page page = new Page(report);
page.AddCB_MM(25,
new RepString(
new FontProp(
new FontDef(report, FontDef.StandardFont.Courier), 14), "Seu texto"));
report.Save(arquivo);
Pronto, fácil assim no site do projeto há alguns exemplos legais, acho que vale a pena dar uma olhada.
Referências
http://report.sourceforge.net/
domingo, 1 de novembro de 2009
Usando Checkbox no repeater
Para desenvolver essa aplicação é necessário
Visual Studio 2005 ou compatível
Framework 2.0
1º Adicione um Repeater no formulário
2º Vá no modo Source para editar o template do arquivo
3º Adicione o componente checkbox
O código deverá estar parecido com isso
4º Adicionar DataSource ao Repeater
Nesse caso eu vou criar uma coleção de String vou popular com dentro de um laço e instanciar o valor do DataSource do Repeater1 com a lista. No método Load_Page coloque o seguinte código.
if (!Page.IsPostBack) 5º Colocando Eval no Repeater Agora coloque o valor da lista que você irá visualizar no Repeater 6º Imprimindo o resultado Adicione um Label e um Button, no evento Click do botão adicione o seguinte código Label1.Text = String.Empty;
{
List
for (int i = 0; i < datasource =" lista;">
Container.DataItemFicará da seguinte forma
foreach (RepeaterItem item in Repeater1.Items)
if (((CheckBox)item.Controls[1]).Checked) Label1.Text = ((CheckBox)item.Controls[1]).Text + "
";