geovanepc Postado Agosto 14, 2014 Denunciar Share Postado Agosto 14, 2014 Mais uma vez, quero agradecer por toda ajuda disponibilizada aqui pelos colegas do forum. Pois bem, desta vez, estou tentando criar um player para rodar mídias usando o ActiveX Windows Media Player no Delphi7. Já tinha desenvolvido uma aplicação semelhante, só que agora quero usar os recursos disponíveis no WMP, como a Playlist. Importei o WMP sem problemas. Tenho um ListBox com uma lista de vídeos para serem acrescentados no WMP, depois é só configurar o loop infinito e dar o Play. C:\midias\midia1.wmv C:\midias\midia2.wmv C:\midias\midia3.wmv Encontrei este exemplo na Net. procedure TForm1.BitBtn5Click(Sender: TObject); var Xwmp: IWMPMedia; begin WindowsMediaPlayer1.currentPlaylist.Clear; Xwmp := WindowsMediaPlayer1.newMedia('C:\midias\midia1.wmv'); WindowsMediaPlayer1.currentPlaylist.insertItem(0, Xwmp); Xwmp := WindowsMediaPlayer1.newMedia('C:\midias\midia2.wmv'); WindowsMediaPlayer1.currentPlaylist.insertItem(1, Xwmp); Xwmp := WindowsMediaPlayer1.newMedia('C:\midias\midia3.wmv'); WindowsMediaPlayer1.currentPlaylist.insertItem(2, Xwmp); WindowsMediaPlayer1.Controls.Play; end; Foi apenas isso que encontrei, não sei se está faltando algumas linhas. Este código compila perfeitamente, mas na hora de executar ele dá um erro de Access violation at address. Gostaria de saber se algum colega poderia me ajudar. Desde já agradeço. Um forte abraço à todos. GeovanePC. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 14, 2014 Denunciar Share Postado Agosto 14, 2014 veja se voce não esqueceu de definir a uses uses WMPLib_TLB; ou veja outros exemplos que voce pode tentar adaptar ao seu código =============================================================================== fmMain4.WindowsMediaPlayer1.currentPlaylist.clear; for i := 0 to ListBox4.Count-1 do begin media:=fmMain4.WindowsMediaPlayer1.newMedia(WideString(fmControl.StringGrid1.Cells[1,strtoint(StringGrid1.Cells[3,i])])); fmMain4.WindowsMediaPlayer1.currentPlaylist.insertItem(i,media); end; fmMain4.WindowsMediaPlayer1.controls.playItem(fmMain4.WindowsMediaPlayer1.currentPlaylist.Item[ListBox4.ItemIndex]); fmMain4.WindowsMediaPlayer1.controls.play; ================================================================================ procedure TForm1.Button1Click(Sender: TObject); var l_CdDriveList: IWMPCdromCollection; l_CdDrive: IWMPCdrom; l_CdAlbum: IWMPPlaylist; l_CdMedia: IWMPMedia; i: Integer; begin l_CdDriveList := WindowsMediaPlayer1.cdromCollection; l_CdDrive := l_CdDriveList.Item(0); l_CdAlbum := l_CdDrive.Playlist; WindowsMediaPlayer1.currentPlaylist.clear; for i := 0 to l_CdAlbum.count -1 do begin l_CdMedia := l_CdAlbum.Item; WindowsMediaPlayer1.currentPlaylist.appendItem(l_CdMedia); end; WindowsMediaPlayer1.controls.play; end; ====================================================================== //Adicione essa procedure. procedure add2List(URL:String); var m:IWMPMedia; begin m := Form1.WindowsMediaPlayer1.mediaCollection.add(URL); Form1.WindowsMediaPlayer1.currentPlaylist.appendItem(m); end; procedure TForm1.Button1Click(Sender: TObject); var begin with WindowsMediaPlayer1 do begin // Limpa a playlist. currentPlaylist.clear; // Aqui você vai adicionando as músicas: add2List('C:\music.mp3'); add2List('C:\music2.mp3'); // Play controls.play; end; end; ============================================================ abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 geovanepc Postado Agosto 14, 2014 Autor Denunciar Share Postado Agosto 14, 2014 (editado) Na verdade a Uses é declarada no momento em que importo o ActiveX. Veja o código: //------------------------------------------------------------------------------------------------------------------// unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, WMPLib_TLB, ExtCtrls, Buttons; type TForm1 = class(TForm) WindowsMediaPlayer1: TWindowsMediaPlayer; Player: TTimer; BitBtn1: TBitBtn; //------------------------------------------------------------------------------------------------------------------// Segue a parte do código que estava testando: procedure TForm1.BitBtn5Click(Sender: TObject); var Xwmp: IWMPMedia; midias: integer; begin // midias := 0; // Apagar Playlist // WindowsMediaPlayer1.currentPlaylist.Clear; Xwmp := WindowsMediaPlayer1.newMedia('E:\Media\Medias\video1.wmv'); WindowsMediaPlayer1.currentPlaylist.insertItem(0, Xwmp); //WindowsMediaPlayer1.currentPlaylist.appendItem(Xwmp); Xwmp := WindowsMediaPlayer1.newMedia('E:\Media\Medias\video2.wmv'); WindowsMediaPlayer1.currentPlaylist.insertItem(1, Xwmp); //WindowsMediaPlayer1.currentPlaylist.appendItem(Xwmp); Xwmp := WindowsMediaPlayer1.newMedia('E:\Media\Medias\video3.wmv'); WindowsMediaPlayer1.currentPlaylist.insertItem(2, Xwmp); //WindowsMediaPlayer1.currentPlaylist.appendItem(Xwmp); Xwmp := WindowsMediaPlayer1.newMedia('E:\Media\Medias\video4.wmv'); WindowsMediaPlayer1.currentPlaylist.insertItem(3, Xwmp); //WindowsMediaPlayer1.currentPlaylist.appendItem(Xwmp); WindowsMediaPlayer1.Controls.Play; { for midias := 0 to ListBox1.Items.Count - 1 do begin Xwmp := WindowsMediaPlayer1.newMedia(ListBox1.Items.Strings[midias]); WindowsMediaPlayer1.currentPlaylist.insertItem(midias, Xwmp); // Play nas mídias // WindowsMediaPlayer1.Controls.Play; end; } end; //------------------------------------------------------------------------------------------------------------------// Note algumas linhas com // barras // e { chaves }, justamente linhas ou trechos de código para testar. Vou testar esses código novos, Por enquanto muito obrigado Jonas e aos demais colegas. Um forte abraço à todos. GeovanePC. Editado Agosto 14, 2014 por geovanepc Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 14, 2014 Denunciar Share Postado Agosto 14, 2014 fiz um teste aqui com esse código ... funciona perfeitamente unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, WMPLib_TLB, StdCtrls; type TForm1 = class(TForm) WindowsMediaPlayer1: TWindowsMediaPlayer; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure add2List(URL:String); var m:IWMPMedia; begin m := Form1.WindowsMediaPlayer1.mediaCollection.add(URL); Form1.WindowsMediaPlayer1.currentPlaylist.appendItem(m); end; procedure TForm1.Button1Click(Sender: TObject); begin with WindowsMediaPlayer1 do begin // Limpa a playlist. currentPlaylist.clear; // Aqui você vai adicionando as músicas: add2List('d:\musicas\thunderball.mp3'); add2List('d:\musicas\moonraker.mp3'); // Play controls.play; end; end; end. abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 geovanepc Postado Setembro 2, 2014 Autor Denunciar Share Postado Setembro 2, 2014 (editado) JHonas eu testei este código: //------------------------------------------------------------------------------------------------// procedure add2List(URL:String);var m:IWMPMedia;begin m := Form1.WindowsMediaPlayer1.mediaCollection.add(URL); Form1.WindowsMediaPlayer1.currentPlaylist.appendItem(m);end;procedure TForm1.Button1Click(Sender: TObject);begin with WindowsMediaPlayer1 do begin // Limpa a playlist. currentPlaylist.clear; // Aqui você vai adicionando as músicas: add2List('d:\musicas\thunderball.mp3'); add2List('d:\musicas\moonraker.mp3'); // Play controls.play; end; //------------------------------------------------------------------------------------------------// E realmente funcionou! Agora estou precisando pegar o número da mídia que está sendo executada pelo WMP. Outro problema que está acontecendo é que, ao maximizar o formulário com Align alClient e o WMP também com Align alClient, o vídeo que está sendo executado em tela cheia, fullscreem pelo WMP, perde o tamanho de tela cheia, quando termina de executar a última mídia da lista, ele retorna ao tamanho pequeno (original). Gostaria de encontrar um código que fixasse (travasse) o Form no fullscreen e o WMP dentro dele também. Desde já agradeço a atenção e ajuda prestada pelos colegas aqui do Forum. Um forte abraço à todos. Editado Setembro 2, 2014 por geovanepc Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 3, 2014 Denunciar Share Postado Setembro 3, 2014 Agora estou precisando pegar o número da mídia que está sendo executada pelo WMP. olhe no código Button2Click; Gostaria de encontrar um código que fixasse (travasse) o Form no fullscreen e o WMP dentro dele também. voce pode usar a propriedade FullScreen = True do WMP ou usar a propriedade WindowsState do Form deixando como wsMaximized =========================================================================== Uma melhorada no código unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, WMPLib_TLB, StdCtrls, Grids; type TForm1 = class(TForm) Button1: TButton; WindowsMediaPlayer1: TWindowsMediaPlayer; Edit1: TEdit; Button2: TButton; titelgrid: TStringGrid; Button3: TButton; function cddvd(cddvd: Integer): Boolean; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} // INFORMAÇÕES SOBRE A MUSICA function TForm1.cddvd(cddvd: Integer): Boolean; var LThePlayList: IWMPPlaylist; loop :Integer; begin LThePlayList := WindowsMediaPlayer1.cdromCollection.Item(0).Playlist; Windowsmediaplayer1.currentPlaylist := LThePlaylist; for Loop := 0 to LThePlayList.Count - 1 do begin titelgrid.RowCount := Loop + 1; titelgrid.Cells[0, Loop] := IntToStr(Loop + 1); titelgrid.Cells[1, Loop] := LThePlayList.Item[Loop].name; titelgrid.Cells[2, Loop] := LThePlayList.Item[Loop].getItemInfo('Genre'); titelgrid.Cells[3, Loop] := LThePlayList.Item[Loop].durationString; titelgrid.Cells[4, Loop] := LThePlayList.Item[Loop].sourceURL; end; end; // FUNÇÃO PARA PEGAR O INDICE DA MUSICA function getCurrentMediaIndex(WMP: TWindowsMediaPlayer; cm: IWMPMedia): Integer; var pl: IWMPPlaylist; pm: IWMPMedia; i: Integer; begin Result := -1; pl := WMP.currentPlaylist; for i := 0 to pl.count-1 do begin pm := pl.Item; if pm.name = cm.name then Result := i; end; end; procedure add2List(URL:String); var m:IWMPMedia; begin m := Form1.WindowsMediaPlayer1.mediaCollection.add(URL); Form1.WindowsMediaPlayer1.currentPlaylist.appendItem(m); end; procedure TForm1.Button1Click(Sender: TObject); begin cddvd(0); with WindowsMediaPlayer1 do begin // Limpa a playlist. currentPlaylist.clear; // Aqui você vai adicionando as músicas: add2List('d:\musicas\thunderball.mp3'); add2List('d:\musicas\moonraker.mp3'); // Volume Inicial WindowsMediaPlayer1.settings.volume := 10; // Play controls.play; end; cddvd(0); end; procedure TForm1.Button2Click(Sender: TObject); var cm: IWMPMedia; i : integer; begin // INFORMA QUAL O VALOR DO INDICE DA MUSICA QUE ESTA SENDO EXECUTADA cm := WindowsMediaPlayer1.currentMedia; ShowMessage(IntToStr(getCurrentMediaIndex(WindowsMediaPlayer1, cm))); end; procedure TForm1.Button3Click(Sender: TObject); begin // INFORMAÇÕES ADCIONAIS showmessage( WindowsMediaPlayer1.currentMedia.getItemInfo('Name')); showmessage( WindowsMediaPlayer1.currentMedia.getItemInfo('author')); showmessage( WindowsMediaPlayer1.currentMedia.getItemInfo('Title')); showmessage( WindowsMediaPlayer1.currentMedia.getItemInfo('Album')); showmessage( WindowsMediaPlayer1.currentMedia.getItemInfo('copyright')); showmessage( WindowsMediaPlayer1.currentMedia.getItemInfo('Artist')); showmessage( WindowsMediaPlayer1.currentMedia.getItemInfo('Genre')); showmessage( WindowsMediaPlayer1.currentMedia.getItemInfo('Abstract')); showmessage( WindowsMediaPlayer1.currentMedia.getItemInfo('bitRate')); showmessage( WindowsMediaPlayer1.currentMedia.getItemInfo('duration')); showmessage( WindowsMediaPlayer1.currentMedia.getItemInfo('sourceURL')); end; end. ========================================================================== outro exemplo http://www.devmedia.com.br/desenvolvendo-um-media-player/6324 abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 geovanepc Postado Setembro 5, 2014 Autor Denunciar Share Postado Setembro 5, 2014 O primeiro código que pega o Index da música que tá tocando, ainda não testei. //----------------------------------------------------------------------// Mas esse aqui sim. GeovanePC: "Gostaria de enconrar um código que fixasse (travasse) o Form no fullscreen e o WMP dentro dele também." Jhonas: Voce pode usar a propriedade FullScreen = True do WMP ou usar a propriedade WindowsState do Form deixando como wsMaximized //---------------------------------------------------------------// Essas opções foram as primeiras que utilizei, não dá certo não, o Form fica FullScreen beleza, mas o WMP, após dar o primeiro ciclo na execução da Playlist, minimiza pro tamanho original, ou seja vou ter que dimensionar o FORM e o WMP conforme o tamanho das Telas. Tenho que trazer o Hardware para redimensionar e recompilar o programa para cada caso. Aí fica um trem muito amador. Obrigado pelas respostas. Um forte abraço à todos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 geovanepc Postado Setembro 5, 2014 Autor Denunciar Share Postado Setembro 5, 2014 Agora sim Jhonas, testei o primeiro código, que pega a mídia em execução pelo WMP. Funcionou beleza. Agora só falta resolver o problema da tela cheia. Obrigadão Jhonas e aos demais colegas. Um forte abraço à todos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 5, 2014 Denunciar Share Postado Setembro 5, 2014 titelgrid.Cells[1, Loop] := LThePlayList.Item[Loop].name; titelgrid.Cells[2, Loop] := LThePlayList.Item[Loop].getItemInfo('Genre'); titelgrid.Cells[3, Loop] := LThePlayList.Item[Loop].durationString; titelgrid.Cells[4, Loop] := LThePlayList.Item[Loop].sourceURL; se voce reparou esse código joga para uma stringgrid o nome da musica, o genero , a duração em minutos e o caminho da musica no hd obs: dimensione o tamanho do WMP no proprio form, ele ficara do mesmo tamanho ao finalizar o ciclo de musicas ( o teste que fiz o WMP ficou do mesmo tamanho ) abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 geovanepc Postado Setembro 6, 2014 Autor Denunciar Share Postado Setembro 6, 2014 O problema de dimensionar um formulário de tamanho fixo, é que quando eu mudar de tela, vou ter que redimensionar e recompilar o programa. Quero implementar um sistema que se ajuste automaticamente à todos os tamanhos, fullscreen. Se não tiver jeito, vou ter que mudar de ferramenta. Desde já agradeço. Um forte abraço à todos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 6, 2014 Denunciar Share Postado Setembro 6, 2014 Quero implementar um sistema que se ajuste automaticamente à todos os tamanhos, fullscreen. Ajustar resolução de Video Automaticamente - veja esses links https://www.scriptbrasil.com.br/forum/topic/172621-resolvidoresolucao-de-video/ http://www.planetadelphi.com.br/dica/6803/ajuste-automatico-da-resolu%C3%A7%C3%A3o abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 geovanepc Postado Setembro 6, 2014 Autor Denunciar Share Postado Setembro 6, 2014 Vamos fazer assim: Crie um novo projeto, importe o ActiveX do Windows Media Player. Arraste pro Form. Mude a propriedade do WMP para (Align = alClient). O Form vai ter as dimensões: 200 x 400, só pra efeito de teste. No evento OnShow do Form digite: WMP.URL := 'C:\Indoor\Medias\Qualquervídeo.wmv'; Só para que o vídeo seja executado no momento que mostrar o formulário. Agora vamos colocar um botão: E no evento OnClick digite: //-----------------------------------------------------------------// procedure TForm1.Button1Click(Sender: TObject); begin Form1.WindowState := wsMaximized; WMP.Align := alClient; end; //-----------------------------------------------------------------// Beleza, executem o projeto, depois que o vídeo estiver rodando, cliquem no botão para maximizar o formulário, isso, agora eu pergunto, o WMP cresceu juntamente com o Form? Se o seu WMP não acompanhou o alinhamento do Form, aumentou junto com ele, parabéns, pois aconteceu a mesma coisa aqui comigo. E é justamente isso que quero resolver, o Form tem que se ajustar ao tamanho da resolução de vídeo e o WMP tem que se ajustar no tamanho do Form por dentro, e isso, sem perder a execução da mídia que está rodando no exato momento do alinhamento. O WMP.FullScreen eu já utilizei e não serve, deu um problema, quando o WMP termina a execução da Playlist, eu utilizo o WMP.PlayState = 10, que equivale a [10 Ready] Ready to begin playing. para fazer a releitura do arquivo Playlist.txt. Veja o código abaixo: //----------------- Isso aqui fica dentro de um Timer -------------------------------------------// if WindowsMediaPlayer1.playState = 10 then begin //StatusBar2.Panels.Items[0].Text := '[10 Ready] Ready to begin playing.'; // Aqui eu pego o Status e lanço em uma StatusBar, só pra controle. Posicao.Enabled := false; // Paro o Timer que faz essa verificação. ReeLer; // Chamo a Releitura da Playlist e ligo o Timer novamente. end; //------------------------------------------------------------// //------------------------------------------------------------// procedure TForm1.ReeLer; begin Lista.Clear; // Limpa a Lista do StringList adquirida no FormShow WindowsMediaPlayer1.currentPlaylist.clear; // Limpa as Mídias do WMP //---- Testa se o arquivo PLAYLIST.TXT existe, usando a path do Exeuctável (ExtractFilePath)+ParamStr(0) + mais o Restante do Caminho "\Playlist\Playlist.txt" if FileExists(ExtractFilePath(ParamStr(0)) + '\Playlist\Playlist.txt') then begin try //------- STRINGLIST recebe todas as linhas sem filtragem ----------------------------// Lista.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\Playlist\Playlist.txt'); //-------------- Pega os dados Linha por Linha StringList, com os Paths (Caminhos) --------// for i := 0 to Lista.Count - 1 do begin if FileExists(Lista.Strings) then begin //----------- Pega os dados, Linha por Linha, já filtrados -------------------// add2List(Lista.Strings); // Esse aqui é o código que você me passou Jhonas. end; end; except // Lista.Free; end; end; // Aqui em baixo, foram feitos vários testes sem sucesso, alguns estão até desativados, mas deixei como exemplo // //Form1.Align := alClient; //WindowsMediaPlayer1.Align := alClient; {Form1.Align := alClient; WindowsMediaPlayer1.Align := alClient; WindowsMediaPlayer1.controls.play; WindowsMediaPlayer1.fullScreen;} WindowsMediaPlayer1.Focused; WindowsMediaPlayer1.controls.play; //WindowsMediaPlayer1.fullScreen; WindowsMediaPlayer1.Focused; Posicao.Enabled := true; // Liga o Timer da execução das mídias; end; //----------------------------------------------------------------------// //---------------------------- Aqui tá o código que roda no FormShow -----------------------------------------// procedure TForm1.FormShow(Sender: TObject); begin ShowWindow(FindWindow('Shell_TrayWnd', nil), SW_HIDE); // Some a Barra de Tarefas. //Form1.Align := alClient; //WindowsMediaPlayer1.Align := alClient; Lista := TSTringList.Create; parametros := ParamStr(0); // Pega diretório onde o Executável rodou. caminho := ExtractFilePath(parametros); // Retira somente o path (caminho) Ex: "C:\Indoor\" //------- Configurações dos Caminhos (Paths) -----------------------------// path_playlist := caminho + 'Playlist\'; path_config := caminho + 'Config\'; path_medias := caminho + 'Medias\'; //---- Testa se o arquivo PLAYLIST.TXT existe, usando a path do Exeuctável (ExtractFilePath)+ParamStr(0) + mais o Restante do Caminho "\Playlist\Playlist.txt" if FileExists(ExtractFilePath(ParamStr(0)) + '\Playlist\Playlist.txt') then begin try //------- STRINGLIST recebe todas as linhas sem filtragem ----------------------------// Lista.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\Playlist\Playlist.txt'); //-------------- Pega os dados Linha por Linha StringList, com os Paths (Caminhos) --------// for i := 0 to Lista.Count - 1 do begin if FileExists(Lista.Strings) then begin //----------- Pega os dados, Linha por Linha, já filtrados -------------------// add2List(Lista.Strings); end; end; except // Lista.Free; end; end; WindowsMediaPlayer1.controls.play; // Aqui eu aviso o WMP pra executar as mídias na Playlist. // Label1.Caption := IntToStr(WindowsMediaPlayer1.currentPlaylist.count - 1); // Saber quantas mídias existem, apenas testes. end; //=========================================================================// //=========================================================================// Observações: Como não sabia pegar o número do índice da música em execução na Playlist, tive que fazer assim, usando o Status do WMP. Só que assim aconteceram esses problemas. O Jhonas postou como pegar esses índices, testei, e funcionou muito bem. Agora vou testar de outra forma que antes havia dado certo, foi usando assim: //------------------- Depois de carregar todas a mídias nos códigos anteriores ---------------------------------// // Códigos... // // // Códigos; Finaliza-se com: //---------- Play nas mídias -----------// WindowsMediaPlayer1.Controls.Play; //-------- Ativa modo tela cheia----------------// WindowsMediaPlayer1.fullScreen := true; //---------- Ativa modo Loop ---------------------// WindowsMediaPlayer1.settings.setMode('loop', true); Assim funcionou, mas como eu não tinha como pegar o índice da música, para que quando a Playlist terminasse a execução, ele pegasse uma nova leitura da Playlist, tive que abandonar parte dos códigos. Mas no momento, estou querendo resolver esse problema com o redimensionamento. Agradeço a ajuda de todos. Um forte abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 6, 2014 Denunciar Share Postado Setembro 6, 2014 tente assim abra um novo projeto e coloque um componente WMP unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, WMPLib_TLB; type TForm1 = class(TForm) WindowsMediaPlayer1: TWindowsMediaPlayer; procedure FormActivate(Sender: TObject); procedure FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean); begin WindowsMediaPlayer1.parent:=nil; WindowsMediaPlayer1.Align := alClient; WindowsMediaPlayer1.width:=form1.Width; WindowsMediaPlayer1.Height:=form1.Height-40; WindowsMediaPlayer1.parent:=form1; end; procedure TForm1.FormActivate(Sender: TObject); begin form1.WindowState := wsMaximized; WindowsMediaPlayer1.parent:=nil; WindowsMediaPlayer1.Align := alClient; WindowsMediaPlayer1.width:=form1.Width; WindowsMediaPlayer1.Height:=form1.Height-40; WindowsMediaPlayer1.parent:=form1; end; end. OBS: A janela ficara maximizada ao iniciar, juntamente com WMP ... clique no botão maximizar do form, e veja o que acontece. abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 geovanepc Postado Setembro 7, 2014 Autor Denunciar Share Postado Setembro 7, 2014 (editado) Realmente o WMP acompanhou o tamanho do Form, mas o vídeo que está rodando, fica pequeno, não ocupa a área inteira ao qual o WMP se ajustou, outra coisa, quando clico no botão maximizar, como o senhor solicitou, todo conjunto diminui o tamanho e o vídeo pára de rodar. Obrigado pelos exemplos Jhonas, vou testar mais um pouco e ver no que dá. Um forte abraço à todos. Editado Setembro 7, 2014 por geovanepc Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 geovanepc Postado Setembro 7, 2014 Autor Denunciar Share Postado Setembro 7, 2014 Veja como os vídeos devem rodar: http://www.proxymis.com/badgood.jpg O vídeo tem que se ajustar ao tamanho do WMP, e não o WMP ao formato do vídeo, ok. Sem precisar rodar em fullscreen, pois o tamanho já está dimensionado para ocupar toda a tela. Obrigado à todos. Um forte abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 geovanepc Postado Setembro 7, 2014 Autor Denunciar Share Postado Setembro 7, 2014 (editado) Bom, para que o vídeo ocupe toda área dimensionada, encontrei essa configuração: WMP.URL := 'C:\Indoor\Medias\Meuvídeo.wmv'; // Roda a mídia. WMP.stretchToFit := true; // Ajusta o vídeo às dimensões do WMP. //-----------------------------------------------------------------------------------------------// Encontrei em, aliás tem tudo ou quase tudo aqui: http://msdn.microsoft.com/en-us/library/windows/desktop/dd564088(v=vs.85).aspx //-----------------------------------------------------------------------------// Essa parte, funcionou, vou testar o restante agora. Obrigado à todos. Editado Setembro 7, 2014 por geovanepc Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 7, 2014 Denunciar Share Postado Setembro 7, 2014 se quiser algo mais sofisticado use o componente VideoGrabber para o delphi ( tem muitos outros controles para o video ) http://conexaodelphi.blogspot.com.br/2012/04/tvideograbber-video-sdk-for-delphi.html https://www.google.com.br/?gfe_rd=cr&ei=FosMVL2aENTHsAefqYDQDw&gws_rd=ssl#q=tvideograbber+delphi componente para download http://www.datastead.com/products/tvideograbber/download.html exemplo de demonstração do componente http://www.datastead.com/_releases/vidgrab_9.2.1.4_MainDemo.zip abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
geovanepc
Mais uma vez, quero agradecer por toda ajuda disponibilizada aqui pelos colegas do forum.
Pois bem, desta vez, estou tentando criar um player para rodar mídias usando o ActiveX Windows Media Player no Delphi7.
Já tinha desenvolvido uma aplicação semelhante, só que agora quero usar os recursos disponíveis no WMP, como a Playlist.
Importei o WMP sem problemas.
Tenho um ListBox com uma lista de vídeos para serem acrescentados no WMP, depois é só configurar o loop infinito e dar o Play.
C:\midias\midia1.wmv
C:\midias\midia2.wmv
C:\midias\midia3.wmv
Encontrei este exemplo na Net.
Link para o comentário
Compartilhar em outros sites
16 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.