Delphi formu içinde youtube videosu oynatma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen Lord_Ares »

Muharrem hocamın ilk paylaştığı kod çalışmadı maalesef. Explorerı create ettiği ikinci kod çalıştı sanırım dediği gibi iteklemek gerekiyormuş :D Thelvaci hocam sizin verdiğiniz iframeli örnek herhangi bir iteklemeye gerek duymadan çalıştı oda ilginç :))) Explorerın gariplikleri işte. AliZairov arkadaşımın kodu maalesef çalışmadı. Kullanacak arkadaşlar Muharrem hocamın ikinci paylaştığı örnek

Kod: Tümünü seç

[/Uses ComObj, ActiveX;

Procedure YouTube( VideoCode: String; WebBrowser : TWebBrowser; AutoPlay:Boolean );
var
  strIcerik  : String;
  sStream    : TStringStream;
  IEpp       : OleVariant;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
  Application.ProcessMessages;
  strIcerik := ''
            + '<html><body>'
            + '<iframe width="854" height="510" src="https://www.youtube.com/embed/%EMBED%" frameborder="0" allowfullscreen></iframe>'
            + '</body></html> ';
  strIcerik := StringReplace(strIcerik, '%EMBED%', VideoCode, [rfReplaceAll]);

  if (VarIsEmpty(IEpp)) then
  begin
    IEpp := CreateOleObject('InternetExplorer.Application');
    WebBrowser.Silent := True;
    if Assigned(WebBrowser.Document) then
    begin
      sStream := TStringStream.Create;
      try
        sStream.WriteString(strIcerik);
        sStream.Position := 0;
        // NOT: uses'a ActiveX eklenecek... IPersistStreamInit için...
        (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(sStream));
      finally
        sStream.Free;
      end;
    end;

    IEpp.Quit;
    IEpp := UnAssigned;
  end;
end;
Ve Thelvacı hocamın paylaştığı kodları gönül rahatlığınla kullanabilirler. Çok teşekkür ederim yardımlarınız için.

Kod: Tümünü seç

Procedure YouTube( VideoCode: String; WebBrowser : TWebBrowser; AutoPlay:Boolean );
var
  strIcerik  : String;
  sStream   : TStringStream;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
  Application.ProcessMessages;

  strIcerik := ''
            + '<html><body>'
            + '<iframe width="854" height="510" src="https://www.youtube.com/embed/%EMBED%" frameborder="0" allowfullscreen></iframe>'
            + '</body></html> ';
  strIcerik := StringReplace(strIcerik, '%EMBED%', VideoCode, [rfReplaceAll]);
  if Assigned(WebBrowser.Document) then
  begin
    sStream := TStringStream.Create;
    try
      sStream.WriteString(strIcerik);
      sStream.Position := 0;
      // NOT: uses'a ActiveX eklenecek... IPersistStreamInit için...
      (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(sStream));
    finally
      sStream.Free;
    end;
  end;
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen mrmarman »

@mrmarman yazdı:Bazen eski otomobiller gibi explorer'i iteklemek gerekebiliyor... :lol:
Tecrübe ile sabittir bazı sistemlerde flash eklentisini tetiklemek için illaki de Explorer açmak gerekebiliyor.
Bunu da hiç bir işe yaramayan bir satır ile halledebiliyoruz. Bu satırı kaldırınca çalışmıyor ancak ekleyince çalışıyor. Bunu da normal explorer penceresinde çalışan ama delphi yakasında çalışmayan bir script nedeniyle keşfetmiştim. Anlamsız ama iş görüyor.
Lord_Ares yazdı:Muharrem hocamın ilk paylaştığı kod çalışmadı maalesef. Explorerı create ettiği ikinci kod çalıştı sanırım dediği gibi iteklemek gerekiyormuş :D
:D
Resim
Resim ....Resim
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen Lord_Ares »

Muharrem hocam garip değil mi, iframe ile yaptığımızda herhangi bir create işlemi olmaksızın çalışıyor, diğerinde ise create istiyor. Oysa ikiside aynı nesneyi kullanıyor. Diğerinde de aynı şeyi istemesi gerekir diye düşünürken şaşırttı bizi :)))
Cevapla