webbrowser da hala bulamadım

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

webbrowser da hala bulamadım

Mesaj gönderen Lord_Ares »

merhaba arkadaşlar
Biiliyorum bunu daha önceden soranlar oldu fakat hala çözüm bulamadım. Sorun şu ;
formumda bir adet webbrowser var bunla bir siteye bağlanıp içinden text bilgi okutuyor buna göre sayfada işlemler yaptırıyorum

Soru 1 . Formum create olduktan sonra webbrowsera internet bağlantısı varmı kontrolünü nasıl yaptırabilirim. Varsa sayfayı aç yoksa hata ver.
( chekurl diye bir fonksiyon buldum denedim fakat internet bağlantım bilgisyarı yeniden başlatana kadar tamamen gitti. Ondownload begin kısmına yazdım acces violetion hatası aldım. :) Try except arasına komutlarımı yazdım bu seferde bağlantı gidip geldğinde programım düzgün çalışmadı. internet bağlantı kontrolü yapan bir foncuion buldum oda düzgün çalışmadı yada ben düzgün kullanamadım.)

Soru 2. webbrowser' ın documant complate' inde 3 tane prosedurum var. ilk prosedür açılan web sayfasında kullanıcı adı şifre kısmına bilgileri girerek sayfadaki buttona onclick yapıyor ve girişi başarıyla sağlıyor. açılan sayfa tamamlanınca ikinci prosedürüm devreye girip, sayfadaki gelen mesajlar sayfasını açıyor ve gelen mesajı text olarak bilgisayarıma kaydediyor.
sorun şu ki ilk sayfanın içeriği webbrowserda görüntü olarak tamamlanmamışken prosedür sayfanın içeriğini okumuş ve ikinci sayfaya gitmesi için diğer prosedürüme değerleri göndermiş oluyor. program bazen kırıla biliyor. bunu nasıl aşabilirim.

kodum şu şekilde
-------------------------------
procedure baglan;
begin
form1.WebBrowser1.OleObject.Document.GetElementByID('username').Value:='www.xxxx.com';
form1.WebBrowser1.OleObject.Document.GetElementByID('password').Value:='1234';
form1.WebBrowser1.OleObject.Document.GetElementByID('Login_x').Click;
end;

procedure SayfaBilgisiniAl;
Var
AranacakYer, Ara, SayfaKodu : String;
begin

aranacakyer := form1.WebBrowser1.LocationURL;
Ara := '=';
If Pos(Ara, AranacakYer) > 0 then begin
System.Delete( AranacakYer, 1, Pos(Ara, AranacakYer) + Length(Ara)-1);
SayfaKodu := Copy(AranacakYer, 1, 32);
formidno:=sayfakodu;
form1.WebBrowser1.Navigate('http://xxx.com/xx.html?id='+SayfaKodu); // açacağı sayfanın aderesini buluyor ve navigete ile açıyor

end else form1.Caption:= '? Kod Bulunamadı ?';

end;
-----------------------------------

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin

bağlan;
sayfabilgisinial;

end;


Burda sanırım sorun şu Login sayfası açıldğında documantcomplete olayı meydana gelmiş oluyor ve bağlan prosedurunun düzgün çalışıyor ve Sayfabilgisial prosedürüne işi devrediyor. Fakat login sayfası bu arada yeni bir sayfaya beni yönlendirmiş olduğu için sayfabilgisial prosedürü kırılıyor ve düzgün çalışmıyor.

documancomplate bu prosedurleri nasıl kullanmalıyım ki program kırılmasın.

yardımınız için teşekkürler
Kullanıcı avatarı
Search
Üye
Mesajlar: 74
Kayıt: 01 Oca 2008 01:03
Konum: Konya

Re: webbrowser da hala bulamadım

Mesaj gönderen Search »

Bence webbrowser'e baglantı kontrolu yaptırma..
Baglantı varsa webbrowser'e iş yaptır..

uses wininet;

Kod: Tümünü seç

function UserOnline:boolean;
var
connect_status:dword;
begin
connect_status := 2 {lan} +
1 {modem} +
4 {proxy} ;
result := InternetGetConnectedState(@connect_status,0);
end;
formun oncreate olayına;

Kod: Tümünü seç

if UserOnline = true then 
  begin
       bağlan; 
       sayfabilgisinial;
  end
  else
  begin
        ShowMessage('Internet Bağlantısı Bulunamadı...);
  end;
2. sorun için cozum bu olabilir..

Kod: Tümünü seç

repeat
application.processmessage;
until webbrowser1.readystate=ReadyState_Complete
Yanlıs anlamıssam kusura bakma..
kolay gelsin...
procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
Cevapla