Frame'in sourcena ulasmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
spiderman
Üye
Mesajlar: 70
Kayıt: 02 Ara 2005 03:17

Frame'in sourcena ulasmak

Mesaj gönderen spiderman »

Merhabalar,

bir web sayfasi var ve framlerden olusmus. ve benim framlerin sourcelunu gormem lazim. fakat acess denined hatasini aliyorum surekli. baska bir arkadasim HTMLDocumentClass kullanarak sorunu cozmus ama oda delphi kullanmiyor. ben mshtml import etmeme ragmen bu classi bulamadim. yardimci olursaniz cok sevinirim.
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

Vaktiyle bir uygulama yapmıştım ve bu uygulamada TFORM yerine TWEBBrowser kullanmıştım. sanki bir web sayfası gibi olan formda html içinde bir button yada bir yazıya basıldığında işlem yaptırtıyor yada html içindeki bir tablonun bir kısmına yazılar yazabiliyordum. bunu

http://www.techvanguards.com/products/eventsinkimp/

adresinden indireceğinbileşen ile yapaiblirsin. ister frame olsun ister başka birşey. html ve delphi iletişiminide sağlıyabilirsin. elimde kodlar olmadığı için kod olarak örnek veremiyorum. ancak verdiğim adresteki delphi örneklerini incele..

bu aynı zamanda sıkıcı delphi formlarıyla çalışmanızdan sizi kurtaracak bir bileşendir..

saygılar...
Kullanıcı avatarı
spiderman
Üye
Mesajlar: 70
Kayıt: 02 Ara 2005 03:17

Mesaj gönderen spiderman »

Ilgi ve alakaniza oncelikle cok tesekkur ederim. Benim problemim frame deki html kodlarini elde edebilmek. TWebBrowser dada olabilir actigim sayfa onemli degil. Normal sayfalarin source codelarini alabilmekte problemim yok. ama isin icine frame girince olmuyor. :(
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

işte bu dediğim bileşen ile bunları yapabiliyorsun.
html içindeki bir nesneye ulaşmanı kolaylaştırıyor.

tıpkı javascript ile ulaştığımız gibi...
Kullanıcı avatarı
spiderman
Üye
Mesajlar: 70
Kayıt: 02 Ara 2005 03:17

Mesaj gönderen spiderman »

Dostum dedigin gibi inceledim. SHDocVwDWebBrowserEvents1 ile eventlari yakalayabiliyorum. framebeforenav. gibi. ama sourcelarini alabilecegim herhangi bir komut bulamadim bu kompononte.


ilgi ve alakana tekrar cok tesekkur ederim
Kullanıcı avatarı
spiderman
Üye
Mesajlar: 70
Kayıt: 02 Ara 2005 03:17

Mesaj gönderen spiderman »

Sorunu asagidaki kod ile hallettim. Baskasinada lazim olur diye buraya koyuyorum

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);


  procedure IterateFrames(const AWB: IWebBrowser2); 
  var 
    Doc: IHTMLDocument2; 
    Container: IOleContainer; 
    Enumerator: ActiveX.IEnumUnknown;
    Unknown: IUnknown;
    Browser: IWebBrowser2;
    Fetched: Longint;
  begin
    if (Assigned(AWB.Document))
       and (Supports(AWB.Document, IHTMLDocument2, Doc))
    then begin
      // Recursive searching.
      // ACHTUNG! We cannot use the document's frames collection here, because it
      // does not work in every case (i.e. Documents from a foreign domain).
      // Taken from http://support.microsoft.com/support/kb/articles/Q196/3/40.ASP
      if (Supports(Doc, IOleContainer, Container))
         and (Container.EnumObjects(OLECONTF_EMBEDDINGS, Enumerator) = S_OK)
      then begin
        while Enumerator.Next(1, Unknown, @Fetched) = S_OK do
          if (Supports(Unknown, IWebBrowser2, Browser))
          then begin
            showmessage(doc.body.outerhtml);
            IterateFrames(browser);
          end;
      end;
    end; 
  end;


begin 
  IterateFrames(WebBrowser1.DefaultInterface); 
end;
Cevapla