Skocz do zawartości
dawuald

Prosta Przegladarka W Delphi

Rekomendowane odpowiedzi

Siema

 

Mam taki problem ze na wiekszosc stron torrentowych nie da sie zalogowac z powodu osiagniecia maksymalnej ilosci uzytkownikow jednakze jacys leecherzy sa ciagle usuwani wiec wpadlem na pomysl zeby zrobic taki oto program:

Mialby pole do ktorego wpisywaloby sie adres strony, wyswietlalby ta strone i odswierzal co 1 sekunde, mialby przycisk start ktory zaczynalby odswierzac i taki patent ze gdy wlaczylby sie formularz rejestracyjny na ta dana strone, wyswietlalby komunikat informujacy o tym.

 

Łatwo powiedziec, trudno zrobic. Jakie komponenty mam wybrac z delphi 7? Przycisk to wiem button potem edit do wpisywania adresu. Ale jaki do wyswietlania strony? I teraz jak zaprogramowac buttonclick zeby startowal odswierzanie i jak zrobic zeby z edit wprowadzalo sie adres strony do wyswietlenia. I jeszcze jedno Jak zrobic alerta ktory bedzie mowil ze jest wolne miejsce. Macie jakies pomysly? Dopiero zaczynam przygode z delphi i nie umiem prawie nic ale przydalby mi sie taki program :D.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Skorzystaj z TWebBrowser'a. Pozatym za duzo pytan, poszukaj, nikt nie bedzie za Ciebie pisal programu bo ma swoje projekty a pozatym Ty nic sie nie nauczysz. Pytaj sie ale o cos jak cos obejsc albo jak zrobic cos czego nie potrafisz (poza tym aby ktos napisal Ci aplikacje)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Na początek, to odradzam co 1 sekundę. 5 sekund to chyba jeszcze lekka przesada.

 

Komponent dobry. Poza tym musisz co chwilę (np używając TTimer) sprawdzać adres aktualnej strony. Jeśli będzie np. "http://www.jakas.strona.pl/wpadnij_pozniej.htm" to oznacza, iż nie dostałeś się na formularz. Jeśli będzie inny, to jesteś w domu. Wtedy np. puszczasz jakiś dźwięk (chociażby w TMediaPlayer) i wyświetlasz MsgBoxa.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Użyć timera (kontrolki TTimer). Wrzucasz ją na formę, klikasz 2 razy i dostajesz się do kodu, gdzie dopisujesz podane wyżej przec Ciebie wywołanie funkcji. Całość wygląda więc tak (o ile dobrze pamiętam - dawno w Delphi się nie bawiłem):

Timer1.Timer()beginWebBrowser1.Refresh;end;

Czas ustawia się w Properties - opcja "Interval" (w ms). Można też podczas ładowania formy dodać:

Timer1.Interval:=5000;

5000 ms = 5 sekund

Edytowane przez ULLISSES

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tylko ze ja chcialbym zeby czas odswiezania wprowadzalo sie z zewnatrz przez tedit. A potem przyciskiem start refresh zaczynal odswierzac. I jeszcze problem jest ze z tego co zauwazylem to gdy juz wlaczy sie formularz to adres strony sie nie zmienia - czyli program musialby jakos inaczej na to reagowac.

 

 

EDIT:

Czyli potrzebuje czegos takiego:

 

procedure TForm4.SpeedButton2Click(Sender: TObject);

begin

odczytaj wartosc z edit2 i ustaw jako czas co jaki ma sie odswiezac strona;

odswiezaj wedlug ustalonego czasu az do pojawienia sie forumlarza :D;

end;

Edytowane przez dawuald

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ustawia Timer:

 

Gdy wpisane do Edita w ms:

Timer1.Interval:=Edit2.Text;

lub gdy wpisane w sekundach:

Timer1.Interval:=1000*Edit2.Text;

Prawdopodobnie może nie działać i będzie potrzebna konwersja z typu String do Integer. Było cos takiego jak "StrToInt", tylko nie pamiętam, czy w tym języku. Sprawdź w pomocy. Ewentualnie "Int()"

 

Włączanie Timera:

Time1.Enabled:=True;

Wyłączanie Timera:

Time1.Enabled:=False;

Samo odświerzanie ("WebBrowser1.Refresh") powino być w akcji "Timer1.Timer()"

 

Kwestia wykrycia zaladowania formularza. Tu coś na pewno powinno się zmieniać. Może zmienia się WebBrowser1.Title albo coś takiego. Ustal, które pole z obiektu WebBrowser1 się zmienia i reaguj na zmianę (także w Timer1.Timer) - np. :

Zakładając, iż bierzący tytuł strony to "Przykro nam, sprobuj pozniej", a po załadowaniu formularza będzie inny, to robimy tak:

if WebBrowser1.Title<>"Przykro nam, sprobuj pozniej" thenbeginMsgBox("ALARM!!!!");PlaySound("c:\alarm.wav");end;

Składnię "MsgBox" i "PlaySound" pisałem z pamięci (w ciemno), więc może się różnić.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

nie ma sesnu aby timer sprawdzal sobie interval, daj dodatkowego buttona w ktorym dasz:

Timer.Interval := StrToInt(Edit1.Text);
a do procedury WebBrowsera DocumentCompleted czy jakos tak daj:

if pos(zrodlostrony, 'przykro nam, nie ma wolnych miejsc') = 0 then // nie pamietam jak sie bralo zrodlo strony, ale z tym to sobie poradziszWebBrowser.RefreshelseMessageBox('Uwaga', 'Mozna sie rejstrowac', MB_OK);

Wszytsko pisane z glowy wiec moga byc male bledy

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A kto napisał, iż timer ma sobie sprawdzać? Tą prodecurkę należy dodać do przycisku start, który będzie uruchamiał sprawdzanie i timer:

przyciskStart.OnKeyDown()beginTimer1.Interval := StrToInt(Edit2.Text) * 1000;Timer1.Enabled:=True;end;

*1000 wynika z tego, iż zalecam do Edit2 wpisywać jednak sekundy, które już w samym programie zamieniane są na milisekundy.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

siema

Dzieki za odpowiedzi. Prawie dziala :). Bo tak z ego co zauwazylem to gdy wlaczam program to ten timer jest domyslnie wlaczony i odswieza co sekunde bo tak ma w interval. To ustawilem w form na on create timer1.enabled:=false. Wszystko byloby dobrze tylko ze on nie reaguje na nacisniecie przycisku start w ktorym jest timer1.enabled:=true. Co zrobic zeby na niego zareagowal

 

EDIT:

Ok! Dziala jak nalezy. Dzieki. Ten program ma obslugiwac kilka stron dlatego musze sie troche pomeczyc z rozpoznywaniem zmiany title. Jak napotkam jakies trudnosci to napisze.

 

EDIT:

Juz mam problem. To byl dobry pomysl zeby program rozpoznawal pojawienie sie formularza po zmianie title. Tylko jest problem bo nie ma czegos takiego jak webbrowser1.title.

Nie iwem jak to powiedziec ale jakie polecenie bedzie ok dla webbrowser1 zeby patrzyl na title?

 

EDIT1000 :P:

Ok. doszedlem do tego co to za funkcja ma byc. Teraz jeszcze mam pytanie jedno. Jak wyswietlic messageboxa? Bo messagebox('bleble'); nie dziala :/.

Edytowane przez dawuald

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

EDIT:

Teraz mam powazny problem. Jako ze ten program obsluguje kilka stron potrzebne mi jest cos takiego:

 

Jesli tytyul strony jest rozny od TORRENTBYTES POLISHTRACKER TORRENTLEECH wtedy

zatrzymaj timer i wyswietl msgbox

 

Narazie mam tak dla kazdej strony:

if webbrowser1.locationname<>'TorrenBytes' then

timer1.enabled:=false;

Application.Messagebox('bleble');

 

I powiedzmy jesli jest ustawione torrentbytes to i tak wywala blad bo tytul jest rozny od np. polish tracker

 

Jak zrobic zeby sprawdzal czy jest rozne od podanych ale nie wyswietlal messageboxa jesli jest zgodne chocby z jednym z title'ow

Edytowane przez dawuald

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wydaje mi sie ze nawet nie trzeba sie znac na tym obiekcie tylko odpowiednie polecenie cos tak jakby:

 

Jesli title jest rozny od "torrentbytes' LUB Od 'Polishtracker' lub od itd. Moze jest cos takiego jak LUB :)

 

EDIT:

Wystarczylo by nawet cos takiego:

 

Jesli title jest rozny od 'TorrentBytes' a adres strony to 'http://www.torrentbytes.net/signup.php' to

begin

cos tam cos tam;

end;

Edytowane przez dawuald

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

OK pobawilem sie i DZIALA. Reaguje na formularz i w ogogle. Dzieki Wam

 

Jeszcze jedno pytanie. Chcialbym zeby przy pojawieniu sie formularza program odgrywal jakis dzwiek. Z tym ze wiadomo rozne osoby rozpakuja ten program do roznch katalogow. wiec sciezka do pliku dziwekowego bedzie rozna. Jedyne co to wiadomo ze ten plik bedzie w tym samym folderze co program. Jak zrobic zeby program sam "odnajdywal" plik dzwiekowy i go odtwarzal?

Edytowane przez dawuald

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Kur...

Moze mi ktos wytlumaczyc co ja zapisuje zle ze to nie dziala?

 

if (webbrowser1.LocationURL='http://www.polishtracker.org/takesignup.php') or (webbrowser1.LocationURL='http://www.polishtracker.org/signup.php') and (webbrowser1.LocationName<>('PolishTracker')) then	begin	  timer1.enabled:=false;	  Application.MessageBox('Zwolnilo się miejsce! Przeczytaj README!','Udalo się!',MB_OK or MB_ICONINFORMATION);

Gdy pojawia sie formularz to ani nie wywala alerta anie sie nie zatrzymuje :/

 

edit:

Juz wiem. Title sie w ogogle nie zmienia :/ Czyli pozostaje sprawdzanie zrodla. A to juz wyzsza szkola jazdy.

Edytowane przez dawuald

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

1. Staraj się nie pisać 2 postów pod rząd.

2. LocationURL chyba powinien się zmieniać. Jeśli się zmienia i przed załadowaniem formularza masz adres "www.polishtracker.org/takesignup.php", to zrób tak:

if (webbrowser1.LocationURL<>'http://www.polishtracker.org/takesignup.php') then begin timer1.enabled:=false; Application.MessageBox('Zwolnilo się miejsce! Przeczytaj README!','Udalo się!',MB_OK or MB_ICONINFORMATION); wmp1.file:="tada.wav"; wmp1.Load; wmp1.Play;end;
wmp1 to obiekt MediaPlayer (taki kolorowy odtwarzacz). Plik z dźwiękiem (wav) znajdzie, jeśli będzie w tym samym katalogu, co program (exe).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Można też jak program ma sprawdzać adres url żeby porównywał do tego co jest wpisany w TEdit, przecież to chyba proste :)

P.S. Czy jest taka opcja która pobiera dane POST z formularzy www? Jak tak to można ją zastosować bo url może mieć dane w $_POST['cos'] :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Formularz jest dość charakterystyczną stroną. Są na nim pola w stylu "Imię:", "Nazwisko:", "Ksywa:" itp. Można więc (w dużym skrócie myślowym) zrobić tak:

if WebBrowser1.zrodlo.zawiera("Ksywa:") thenbegin...end;
W rzeczywistości sprowadza się do przeszukania całego źródła strony (w sumie pliku tekstowego), czy zawiera dany tekst. Do szukania stringu w innym stringu jest chyba nawet jakaś funkcja biblioteczna w Delphi.

sgj będzie wiedział :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Heh. No to czkeam sgj :D. A wpadlem na taki jeszcze pomysl bo juz to gdzies widzialem ze w samym programie wpisujesz te dane rejestracyjne. Czyli np. jest edit do ktorego wpisujesz haslo i potem gdy pojawia sie formularz to program sam wpisuje to haslo w odpowiednie miejsce. Tylko jak to zrobic to nie mam zielonego pojecia.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie wiem czy jest jakis inny sposób, ale jest funkcja do stringów

POS(szukany_tekst, przeszukiwany_tekst)

 

Jezeli zwróci wynik wiekszy od 0 (pozycja pierwszego znaku szukanego tekstu w całym tekscie to znaczy ze znalazło).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Kurde szczerze mowiac to nie wiem jak to zrobic nawet z tymi informacjami.

 

Mam na dysku zrodlo storny z tym formularzem wiec jesli jakas informacja bedzie potrzeban to podam. Co musze z tym zrobic zeby wpisywal odpowiedni tekst w odpowiednim polu?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...