Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Windows Media Player dando erro!


geovanepc

Pergunta

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.
Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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 por geovanepc
Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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 por geovanepc
Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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 por geovanepc
Link para o comentário
Compartilhar em outros sites

  • 0

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 por geovanepc
Link para o comentário
Compartilhar em outros sites

  • 0
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...