Webbrowser

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Cankus2535
Üye
Mesajlar: 1
Kayıt: 03 Ara 2013 02:15

Webbrowser

Mesaj gönderen Cankus2535 »

iyi çalışmalar,
Delphi içerisene bir form oluşturduksan sonra Webbrowser ekleyerek eklemiş olduğum webbrowser ın içerisende açan setinin bir butonuna (Anasayfa) belirli zaman dilemlerini gösterir (3-5-10 dakika) yenileme yapılabilir mi?

yapılabilirliği var ise nasıl bir yol izlemem gerekir.Şimdiden ilginiz için teşekkür ederim.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Webbrowser

Mesaj gönderen mrmarman »

Merhaba..

- Türkçe konusunda sıkıntınız var ya da soruyu telefon üzerinden yazdınız sanırım. Cümleleriniz net anlaşılmıyor.
1. Form'a (1) adet TWebBrowser koyduk. Burası tamam..
2.
@Cankus2535 yazdı:eklemiş olduğum webbrowser ın içerisende açan setinin bir butonuna (Anasayfa) belirli zaman dilemlerini gösterir (3-5-10 dakika) yenileme yapılabilir mi?
işte burada anlamada takıldım...

- Ekran yenileme zaman dilimlerini seçme işini, Web Browser içerisinde ekleyeceğiniz butonlar ile mi yapılması gerekiyor. Neden ?! Zaten bir formunuz varken bunu özellikle neden istiyorsunuz açıklar mısınız.

- Yenileme yapılabilir mi evet
1. Form koyacağınız bir Timer ile aynı sayfayı yeniden refresh ettirirsiniz.
2. HTML sayfanın <HEAD> kısmına aşağıdaki kodu (sayfa size ait ise) kaynağından ekleyebilirsiniz.

Kod: Tümünü seç

<meta http-equiv="refresh" content="5" >
saniye cinsinden yenileme aralığını verirsiniz, örneğin5 dakika için 300 değeri verirsiniz. (5 * 60 = 300 değeri verirsiniz gibi.)
3. HTML sayfanın <HEAD> kısmını bu forumda paylaştığım bu linkteki gibi site yüklenirken daha web sayfası render edilmeden önce müdahale edip ekleyebilirsiniz.
Resim
Resim ....Resim
Hakem50
Üye
Mesajlar: 8
Kayıt: 05 Kas 2013 09:44

Re: Webbrowser

Mesaj gönderen Hakem50 »

Merhaba .Bu Konuyla İlgili Bende Şunu Sormak İstiyorum.
Bilgisayarda Açık Olan Bir Explorer Sayfasını 10 dk da Bir Refresh Yaptıracak Bir Proğram Yapılabilir mi?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Webbrowser

Mesaj gönderen mrmarman »

@Hakem50 Merhaba.

- Tabii ki mümkün. Başka bir yazılımın ekranını bulmak, butonuna basmak veya bir property'sine erişmek gibi kontroller Delphi'den API'ler ile kolaylıkla yapılabilir.

- Benim size bu cevabım üzerine başka bir önerim olacak. Explorer dediniz ya, bir explorer penceresini kendini açtırıp bunun dizginlerini elinizde sanki formunuz üzerindeki bir TWebBrowser'mış gibi kullanabilirsiniz. (bu başka bir konu başlığı ama...) Nasıl mı ?

- Örnekleyim :

- Aşağıdaki örnek yeni bir Explorer sayfası açar ve bu sayfada DelphiTurkiye forumunu navigate ederek, Arama alanına "Webbrowser" kelimesini yazar ardından da arama butonuna (aslında submit eder)

- İşin özü (diğer kod örneklerinden farkı) size bir tane Explorer Penceresi açar dedik ya, bunun kontrolünü projeniz içerisinden dilediğiniz yerden erişebileceğiniz xIExplore isimli bir global değişkende tutar.

- WinApi ile FindWindow, FindWindowEx vs. gerek kalmaz. Kısaca çerçevesi belli olan bir adrese teslim çözümdür. :bravo:

Kod: Tümünü seç

USES ComObj;

Var
  xIExplore : variant;
  xIEHandle : HWnd;
  xExitThr  : boolean = False;
  
function DelphiTurkiye_ARAMA(strUrl, strAra: string): boolean;
var
  lResult   : boolean;
begin
  xExitThr := False;
  try
    if (VarIsEmpty(xIExplore)) or (FindWIndow('IEFrame', nil) = 0) then
    begin
      xIExplore         := CreateOleObject('InternetExplorer.Application');
      xIExplore.Visible := True;
    end
    else
    begin
      xIEHandle := FindWIndow('IEFrame', nil);
      SetForegroundWindow(xIEHandle);
    end;

    xIExplore.Navigate( strUrl );
    while (Cardinal(xIExplore.ReadyState) <> 4) and (xExitThr = False) do
    begin
      Application.ProcessMessages;
      Sleep(100);
    end;

    xIExplore.Document.GetElementById('keywords').Value := strAra;
    xIExplore.Document.forms[0].Submit();

    lResult := True;
  except
    lResult := False;
  end;
  Result := lResult;
end;

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  strUrl, strAra : String;
begin
  strUrl := 'http://www.delphiturkiye.com/forum';
  strAra := 'Webbrowser';
  DelphiTurkiye_ARAMA( strUrl, strAra );
end;
Başarılar.
:bravo:
Resim
Resim ....Resim
Hakem50
Üye
Mesajlar: 8
Kayıt: 05 Kas 2013 09:44

Re: Webbrowser

Mesaj gönderen Hakem50 »

Merhaba mrmarman,
Size Çok Teşekkür Ederim . Eğer Verdiğiniz Örneği Becerebilirsem Beni Büyük Birdertten Kurtarmış Olacaksınız. İnternetten Download Yaparken Oturumumun Kapanmaması İçin Sayfayı 10 Dakikada Bir Yenilemem Gerekiyordu Yenilemessem İndirme İşlemim Yarıda Kalıyordu. Tekrar Teşekkürler. :P
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: Webbrowser

Mesaj gönderen vkamadan »

Merhaba @mrmarman ,
öncelikle çok güzel bir örnek, teşekkürler ,
anlamadığım bir nokta oldu mümkünse bir aydınlatma rica edeceğim ;

kodda , eğer açık bir IEFrame yoksa bir ole nesnesi oluşturup xIExplore a atıyoruz eğer varsa kısmını anlamadım

Kod: Tümünü seç

     xIEHandle := FindWIndow('IEFrame', nil);
      SetForegroundWindow(xIEHandle);
bu kısımda xIExplore a atamayla ilgili bir işlem yok bir eksiklik olabilir mi ? yada nasıl oluyor.

Teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Webbrowser

Mesaj gönderen mrmarman »

@vkamadan merhaba.

- Soruda belirli saniyelerde aynı sayfa refresh ettirmek isteniyor...

- Yani her seferinde yeni sayfa açmak değil de var olan sayfayı yenilecek ya o bakımdan.

- Şimdi
(1) Aynı sorduğun blok içine

Kod: Tümünü seç

ShowMessage('Hala Varım');
ekle
(2) Navigate ettirdiğin butona bas (daha sonra timer içine girecek ya, elle deneme yapmış olursun)
(3) ilk seferinde bu mesaj gelmeyecektir.
(4) Sayfa tamamlandıktan sonra yeniden bas
(5) Bu eklediğin mesaj gelecek.
(6) Yeni TAB aç oraya google vs. taraması yap,
(7) yeniden butona bas,
(8) önceki açtığın sayfa güncellenecek

... gibi. Soruya istinaden yazdım yani... :idea:
Resim
Resim ....Resim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: Webbrowser

Mesaj gönderen vkamadan »

Hızlı cevabınız için teşekkürler ,
bu kod ilk çalıştırıldığında masaüstünde başka bir amaçla açılmış bir IE Penceresi varsa sorun olur mu ? demek istemiştim aslında.
kodu şimdi denedim ilgili durumda herhangi bir sorun çıkmadı.

İyi çalışmalar dilerim.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Webbrowser

Mesaj gönderen mrmarman »

Özetle

- Yani her seferinde yeni sayfa açmak değil de var olan sayfayı yenilecek ya o bakımdan.

- Sadece bizim oluşturduğumuz pencere yoksa yani explorer penceresi kapatılmışsa yeniden xIExplore ataması olacak, Zaten varsa ve buna rağmen yeniden bu procedure çalıştırırsa atama yapılmamalı değil mi ?

- Kurguyu kendinize göre özelleştirin. Ben MEB'in ilsis'ine login olmak için düzenlemiştim.

- Kullanıcılar bir delphi formu içerisinden WebBrowser'a login bilgilerini girmekten rahatsız oldular, ben de dışarıdan böyle bir explorer açtırtıp, login oldurtup sonra raporlama için veri transferlerini delphi cephesinde gerçekleştirmiştim.

- Son kullanıcıya saygıdan yani..
Resim
Resim ....Resim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: Webbrowser

Mesaj gönderen vkamadan »

kodu denemeden önce

Kod: Tümünü seç

 FindWIndow('IEFrame', nil);
API sinin bana bizim oluştuğumuz IE penceresi haricinde ki başka bir IE penceresinin de Handle ının döndürebilceğini düşündüğümden yanılgıya düşmüştüm kodu deneyip sıkıntı olmadığı görmüş oldum.
Açıklamalar için tekrar teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Webbrowser

Mesaj gönderen mrmarman »

Tekrar merhaba...

- Aslında sorduğun soruyu gördüğümde bunu düşündüğünü anlamıştım zaten :lol: :lol: :lol:

- Ancak... açılacak pencerenin TITLE'ının takdir edersin ki ne olduğu (site tasarımcısını saymıyorum) belli değil. Ama şunu biliyoruz, Windows alanındaki Create Order döngüsünde ilk olacağı karinesini geçerli sayıyoruz. Biz bu fenomeni kullandık...

- Bilmem anlatabildim mi :?:
Resim
Resim ....Resim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: Webbrowser

Mesaj gönderen vkamadan »

Windows API ile Pencere işlevleri konusundaki yetersizliğimle ilgiliydi, karşılaştıkça aydınlanıyoruz bizde sayenizde :)
Teşekkürler ,
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Webbrowser

Mesaj gönderen mrmarman »

- Hocam ne demek, bu sözü kabul etmiyorum. :o
- Mesajlarını görmediğimi sanma, hiç de o kadar mütevazi olmaya gerek yok.

- Bu arada bu forumda yaratıcı sorular gelmediğinden midir, bir sessizlik var. Güzel soruydu teşekkürler. :bravo:
Resim
Resim ....Resim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: Webbrowser

Mesaj gönderen vkamadan »

Estağfirullah hocam ,
İyi bir noktaya değindiniz aslında neredeyse sizin kadar eskiyim bu forumda ilk zamanlardaki canlılık kalmadı maalesef buralarda , kendimce her ne kadar Delphi de gelecek olduğunu yürekten inanıp savunsam da sanırım kan kaybıyla ilgili bu sakin haller.
Volkan KAMADAN
www.polisoft.com.tr
Cevapla