Ultimion Napisano Maj 5, 2011 Zgłoś Share Napisano Maj 5, 2011 Witam Mam taki problemik...otoż chcialbym napisac programik, ktory sprawdzi jakie sa zainstalowane przeglądarki www w systemie, nastepnie uruchomil jedna przegladarke (okno zminimalizowane) no i wreszcie aby program sam w przegladarce otwieral pewne strony , analizowal jej żródło. w ogole nie mam pojecia o winAPI moze jakis komponent do tego ??? a jezeli nie , to jak by do tego mozna bylo podejść? Link do komentarza Udostępnij na innych stronach More sharing options...
Integer Napisano Maj 5, 2011 Zgłoś Share Napisano Maj 5, 2011 Na rozgrzewkę proponuję położyć komponent TWebBrowser edita i kilka przycisków a w każdym inna z poniższych funkcji: Edit1.Text:= 'http://forum.unit1.pl'; WebBrowser1.Navigate(Edit1.Text); // otwieranie strony WebBrowser1.Refresh; // odświeżanie WebBrowser1.GoBack; // poprzednia strona ... WebBrowser1.GoForward; // następna strona WebBrowser1.Stop; // zatrzymaj WebBrowser1.GoHome; WebBrowser1.Quit; Uruchamianie programów i otwieranie plików http://www.lukas-home-page.ovh.org/artykul...hellExecute.php Wykrycie Internet explorera http://forum.4programmers.net/Delphi_Pasca..._Detect_plug-in z przeglądarkami będzie trochę więcej zabawy Link do komentarza Udostępnij na innych stronach More sharing options...
olesio Napisano Maj 5, 2011 Zgłoś Share Napisano Maj 5, 2011 Ultimion: można użyć jak wspomniał poprzednik TWebBrowsera, opartego na zainstalowanym w systemie IE, ale jeżeli strony które chcesz analizowac nie potrzebują do obslugi JavaScriptu to polecam posłużyć się pakietem Synapse z http://www.ararat.cz/synapse/doku.php/download - dołączone są dema i dokumentacja, a do parsowania pobranego kodu mozna wykorzystać moduł do wyrażeń regularnych z http://regexpstudio.com - bo oczywiście nie trzeba znać WinAPI, exek trochę spuchnie to wiadomo, ale możesz go spakować UPX'em. Zresztą ciężko trochę od zera wymyślać koło i pisać w WinAPI obslugę protokołu HTTP jak jest do tego świetny według mnie pakiet Synapse, mający na pewno mniej bugów niż Indy i bardziej akutalny. Do bodajże Delphi 2009 wszystko jest z nim ok, wrzucasz odpowiednie moduły do katalogu z programem i dodajesz do sekcji uses. Wszystko powinno dzialać. W razie czego więcej informacji w dokumentacj, przykładach oraz oczywiscie google. Pozdrawiam: olesio Link do komentarza Udostępnij na innych stronach More sharing options...
Ultimion Napisano Maj 5, 2011 Autor Zgłoś Share Napisano Maj 5, 2011 a czy uzywanie komponentu TwebBrowser nie powoduje, ze nie mozna zidnetyfikowac przegladarke internetową po stronie serwera? chodzi o to aby nie bylo widac, ze wchodze na strone z programu X a nie ze standardowej przegladarki ???? Link do komentarza Udostępnij na innych stronach More sharing options...
olesio Napisano Maj 6, 2011 Zgłoś Share Napisano Maj 6, 2011 Sprawdź na http://whatsmyuseragent.com jak jesteś widziany przez serwer. TWebBrowser jest oparty na silniku IE, więc przedstawia się tak jak jest skonfigurowana ta przeglądarka. Nie wiem jak mozna zmieniać UserAgenta w IE, kiedyś robiło się to przez rejestr, teraz nie wiem, IE używam po to aby wejść raz dziennie na jednej stronie i kliknąć w baner, bo pod Operą mam blokowane reklamy google i tyle, od IE jak najdalej Natomiast pod Synapse możesz ustawić inny niż domyslny UserAgent - niemal dowolny, jednak czasami ustawienie jakiegoś egzotycznego useragenta może powodować zmiany w pobieranych danych, ma to na przykład miejsce na FaceBooku przy odczycie danych w formacie JOMS. A przynajmniej tak zaobserwowałem. Pozdrawiam: olesio Link do komentarza Udostępnij na innych stronach More sharing options...
Ultimion Napisano Maj 8, 2011 Autor Zgłoś Share Napisano Maj 8, 2011 wiec jest maly problem z TWebBrowser jak ogladam strony za pomoca tego komponentu to mam monit, ze uzywam starej przeglądarki na stronie http://whatsmyuseragent.com/ tak jest to identyfikowane: Your User Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0) a jak wchodze na stronke z IE z systemu to identyfikuje: Your User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0) jak to zmienic by TWebBrowser pokazywal MSIE 8.0 ??? Link do komentarza Udostępnij na innych stronach More sharing options...
5corpio Napisano Maj 10, 2011 Zgłoś Share Napisano Maj 10, 2011 A jak by spróbować użyć serwerów proxy? Ot taka mini-strona moja po godzinach http://www.wnetrzekuchni.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Ultimion Napisano Maj 10, 2011 Autor Zgłoś Share Napisano Maj 10, 2011 proxy odpada...tak w ogóle to po co proxy ??? chodzi o uruchomienie przeglądarki, która trzeba wykryć w systemie... ograniczę się do IE, ktory jest w windows..wiec muszę tylko sprawdzić gdzie jest zainstalowany system i gdzie jest plik standardowo w winXP jest w c:\Program Files\Internet Explorer\iexplore.exe ale mamy rożne systemy , jak wiec zlokalizowac plik 'iexplore.exe' ??? jak go uruchamiać z wymuszeniem otwarcia podanej strony przez program ??? jak sprawdzać, czy strona została załadowana i jak przesłać źródło tej strony do programu w celu analizy ??? o to głównie chodzi... a my przeszliśmy do proxy ... eh Link do komentarza Udostępnij na innych stronach More sharing options...
Ultimion Napisano Maj 11, 2011 Autor Zgłoś Share Napisano Maj 11, 2011 Dobra troche poszukalem i ... potrafie juz uruchomic IE z poziomu mojego programu, moge tez zaladowac strone jaka chce, moge tez sprawdzac status strony (np czy sie cala zaladowala) moge ustawic czy okno przegladarki IE ma byc widoczne czy tez nie, a jezeli widoczne to jakiego rozmiaru itp. stanąlem nad problemem.... sprawdzam czy strona sie zaladowala i jezeli sie zaladowala to chcialbym jej zrodlo zaladowac sobie np do memo. da sie to jakos zrobic ??? chce poprostu przeanalizowac zrodlo zaladowanej strony. Zaznaczam strona laduje sie w IE a nie w TWebBrowser. calosc zrobilem uzywajac OLEObject wiec moze tez sie da w ten sposob zrodlo strony pobrac do programiku ??? jakies pomysly ??? Link do komentarza Udostępnij na innych stronach More sharing options...
Stelma Napisano Maj 11, 2011 Zgłoś Share Napisano Maj 11, 2011 Czy ty aby nie utrudniasz sobie życia na siłe ? Potrzebujesz załadować stronę z sieci tylko po to by pobrać źródło strony. Więc może nie wysadzaj otwartych drzwi i skorzystaj z pakietu indy bądź najzwyklejszych socketów toć to ~15 linijek kodu jak dobrze pamiętam... Link do komentarza Udostępnij na innych stronach More sharing options...
xevil21 Napisano Maj 11, 2011 Zgłoś Share Napisano Maj 11, 2011 Witam. Czy ty aby nie utrudniasz sobie życia na siłe ? Potrzebujesz załadować stronę z sieci tylko po to by pobrać źródło strony. Więc może nie wysadzaj otwartych drzwi i skorzystaj z pakietu indy bądź najzwyklejszych socketów toć to ~15 linijek kodu jak dobrze pamiętam... Można tak (kod chyba z forum Unit1): procedure DownloadToStream(const URL: string; const SomeStream: TStream); var Buffer : array[1..1024] of Byte; hSession, hURL : HINTERNET; dwRead : DWORD; pBuf : Pointer; dwBufLen : DWORD; dwIndex : DWORD; begin hSession := InternetOpen(Opera_UserAgent, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); Application.ProcessMessages; try hURL := InternetOpenURL(hSession, PChar(URL), nil, 0, INTERNET_FLAG_RELOAD, 0); Application.ProcessMessages; dwBufLen := 1024; dwIndex := 0; GetMem(pBuf, dwBufLen); HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH, pBuf, dwBufLen, dwIndex); FreeMem(pBuf, dwBufLen); try repeat InternetReadFile(hURL, @Buffer, SizeOf(Buffer), dwRead); SomeStream.WriteBuffer(Buffer, dwRead); Application.ProcessMessages; until dwRead = 0; finally InternetCloseHandle(hSession); end; finally InternetCloseHandle(hURL); end; end; Pozdrawiam! Link do komentarza Udostępnij na innych stronach More sharing options...
Stelma Napisano Maj 11, 2011 Zgłoś Share Napisano Maj 11, 2011 @up Ja znalazłem na sieci coś takiego: wymaga modułu Wininet Delphi function DownloadURL_NOCache(const aUrl: string; var s: String; agent : string = 'MyApp' ): Boolean; var hSession: HINTERNET; hService: HINTERNET; lpBuffer: array[0..1024 + 1] of Char; dwBytesRead: DWORD; begin Result := False; s := ''; hSession := InternetOpen( PChar(agent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); try if Assigned(hSession) then begin hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, INTERNET_FLAG_RELOAD, 0); if Assigned(hService) then try while True do begin dwBytesRead := 1024; InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead); if dwBytesRead = 0 then break; lpBuffer[dwBytesRead] := #0; s := s + lpBuffer; end; Result := True; finally InternetCloseHandle(hService); end; end; finally InternetCloseHandle(hSession); end; end; Link do komentarza Udostępnij na innych stronach More sharing options...
Ultimion Napisano Maj 11, 2011 Autor Zgłoś Share Napisano Maj 11, 2011 powiem tak...nie moge zaladowac strony po raz drugi lub przy uzyciu innego programu niz to juz otwieram... to co mi tutaj podajecie powoduje, ze otwieram strone ponownie (po raz kolejny) a ja musze zrobic to tak jak powiedzialem ... przegladam strone za pomoca zainstalowanej przegladarki w systemie i tylko tak moge przegladac strony !! Teraz skoro umiem uruchomic z poziomu programu przegladarke... i umiem zaladowac odpowiednia strone w tej przegladarce, odswiezyc itd. powtorze dokladnie. Musze moim programem pobrac zaladowana juz strone z IE (czyli nie otwieram ponownie strony z neta) tylko chce pobrac zrodlo strony , ktora juz jest zaladowana ... pobranie jej ponownie spowoduje, ze zaladuje sie ale inna zawartosc. krotko mowiac .... otwieram IE wpisuje adres w przegladarke i jak strona sie zaladuje to jej zrodlo chce scioagnac do swojego programu, czy takie cos mi udostepni pakiet Indy ???? jezeli nie, to ponawiam pytanie. Jak pobrac zaladowana juz strone w przegladarce IE do mojego programu nie pobierajac danej strony z internetu tylko z przegladarki, ktora juz dana strone sobie otworzyla. pozdro JohnCTN Link do komentarza Udostępnij na innych stronach More sharing options...
Stelma Napisano Maj 11, 2011 Zgłoś Share Napisano Maj 11, 2011 tak pakiet indy umożliwi ci "otwarcie strony". Możesz zapisać stronę za pomocą winApi na dysku i ją rozczytać I tak sądzę iż utrudniasz sobie zycie ponieważ lepsze będą wtyczki np w ff. Link do komentarza Udostępnij na innych stronach More sharing options...
olesio Napisano Maj 11, 2011 Zgłoś Share Napisano Maj 11, 2011 Ultimion: ja nie rozumiem dlaczego uperłeś się otwierać stronę pod przeglądarką www i tak analizowac zwrocony kod, jak może to zrobić za Ciebie program w Delphi. Przecież Indy czy Synapse to taka właśnie kulawa przeglądarka - automat, pobierają lub wysyłąją to co chcesz i jak chcesz, jedynie nie mają obslugi javascriptu czy pluginów, ale do pobrania kodu html się nadają doskonale. Mogą to też zrobić te funkcje podane wcześniej z modułu WinInet, ale na przykład Synapse jest bardziej aktualne i łatwiejsze w obsłudze. Natomiast exek nie spuchnie aż tak bardzo z użyciem Synapse, jeżeli tego się obawiasz. Przynajmniej nie w Delphi 7. A i zawsze można exeka potratkować później UPX'em. Pozdrawiam: olesio Link do komentarza Udostępnij na innych stronach More sharing options...
Ultimion Napisano Maj 11, 2011 Autor Zgłoś Share Napisano Maj 11, 2011 a no sie upieram powod jest oczywisty ... po stronie serwera musi byc widoczne ze uzywam ie8, Firefoxa lub opere a nie przegladarka niezidentyfikowana .... chcialem to zrobic za pomoca TwebBrowser ...ale mam monit na stronie, ze strona sie nie zaladuje poniewaz nie uzywam przegladarki i prosza mnie o zainstalowanie IE8, Firefoxa lub Opere. dlatego upieram sie aby program kontrolowal przegladarke zainstalowana w systemie ... moze z poziomu win API moge jakos uzyc opcji Copy i potem Paste ... wiem, ze kombinuje tropche ;/ Link do komentarza Udostępnij na innych stronach More sharing options...
Stelma Napisano Maj 12, 2011 Zgłoś Share Napisano Maj 12, 2011 Radzę przeczytać po raz kolejny wątek Chłopaki na samym początku mówili o agencie przeglądarki. Notabene w funkcji którą wygrzebałem z sieci również jest parametr określający jako która przeglądarka ma się kod podawać. Chyba że jeszcze jakoś ten serwer identyfikuje przeglądarkę. Najlepiej podaj nam jego adres bądź dane czy używa ciasteczek itp. Link do komentarza Udostępnij na innych stronach More sharing options...
Ultimion Napisano Maj 12, 2011 Autor Zgłoś Share Napisano Maj 12, 2011 poradzilem sobie .... zaladuj zrodlo strony do memo (ViewHTML) ViewHTML.Lines.Add (IEApp.Document.documentElement.innerHTML); teraz tylko szukam jakiegos komponentu co bedzie mi przeszukiwal memo wg wzorca, mozecie jakis doradzic ??? Link do komentarza Udostępnij na innych stronach More sharing options...
Stelma Napisano Maj 12, 2011 Zgłoś Share Napisano Maj 12, 2011 Z całym szacunkiem do Ciebie. Jednak ja się wyłączam w odpowiedziach 17 postów o tym co ktoś odpowiedział w 1. Ty się upierałeś po czym zrobiłeś jak powiedzieliśmy tylko na komponencie zamiast kodu Po prostu wychodzę z założenia iż nie słuchasz co ci tłumaczą. Pamiętaj delphi to nie tylko komponenty to też kod. Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Maj 12, 2011 Zgłoś Share Napisano Maj 12, 2011 Komponent wyszukujacy wzorca w memo to TBrain. www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
olesio Napisano Maj 12, 2011 Zgłoś Share Napisano Maj 12, 2011 @Ultimion: do wyszukiwania wzorca w stringach i ich parsowania najlepiej skorzystać z wyrażeń regularnych. Polceam moduł z http://regexpstudio.com - są tam przykłady oraz dokumentacja, a także masa informacji w google. Bo wiesz sam TBrain Tobie nie wystsrczy, chociaż każdy programista powinien mieć ten komponent i umieć go używać, wspomagając się czasami TGoogle Pozdrawiam: olesio Link do komentarza Udostępnij na innych stronach More sharing options...
Integer Napisano Maj 14, 2011 Zgłoś Share Napisano Maj 14, 2011 W ostateczności najprościej będzie na piechotę: var SPage: string; // gdzie SPage zawiera cały wczytany tekst strony S_HostName: string; begin ... // SHostName:= ipos:= Pos('Hostname:</th><td>',SPage); Delete(SPage, 1, ipos-1+Length('Hostname:</th><td>')); ipos:= Pos('</td>',SPage); S_HostName:= Copy(SPage, 1, ipos-1); ... Link do komentarza Udostępnij na innych stronach More sharing options...
Ultimion Napisano Maj 15, 2011 Autor Zgłoś Share Napisano Maj 15, 2011 @Integer o takie przeszukanie mi chodzilo Jakos nie dostalem tutaj odpowiedzi, znalazlem na jakis innych forach. ogolnie mowiac zrobilem chyba juz wszystko co chcialem, natomiast mam jeden problem, ktorego nie potrafie narazie rozwiazac, otoz: otwieram przegladarke w taki sposob: procedure TKomunikator.FormCreate(Sender: TObject); begin IEApp := CreateOLEObject('InternetExplorer.Application'); IEApp.Visible := false; IEApp.Top := top; IEApp.Left := top; IEApp.Width := 1280; IEApp.Height := 800; IEApp.TheaterMode := false; IEApp.MenuBar := false; IEApp.Resizable := false; // czy mozna zmienic wielkosc okna IEApp.Navigate(''); end; jak widac, uruchamiam InternetExplorer i pustą strone ... dodatkowo ukrywam okno (nie widac go), ustalam wielkosc okna i wylaczam funkcje zmiany wielkosci okna. moje pytanie ...jak wylaczyc mozliwosc zamkniecia okna przegladarki "x", musze to zablokowac podobnie jak Resizable .. ale nie moge znalezc takiego odpowiednika a wylaczenie okna , ktore otworzyl program powoduje utrate 'handle' i wywala blad jak uniemozliwic zamkniecie okna przegladarki, ktorą otwiera moj program ??? musze to zablokowac, gdyz jest moment w ktorym okno jest widoczne czyli w kodzie programu znajduje sie linijka "IEApp.Visible :=true;" Ultimion Link do komentarza Udostępnij na innych stronach More sharing options...
xevil21 Napisano Maj 15, 2011 Zgłoś Share Napisano Maj 15, 2011 Witam. Jeżeli użytkownik nie musi widzieć tego okna, to ustaw mu wartości: IEApp.Top i IEApp.Left, na odpowiednie wartości minusowe. Ty będziesz mógł na tym oknie wykonywać normalnie operacje, a użytkownik nie będzie go widział. Pozdrawiam! Link do komentarza Udostępnij na innych stronach More sharing options...
Ultimion Napisano Maj 15, 2011 Autor Zgłoś Share Napisano Maj 15, 2011 Uzytkownik i ja to jedna osoba chodzi o to abym przez przypadek nie zamknąl przegladarki ... np wylaczyc "x" albo wyswietlic okno bez paska na gorze ... wtedy nie bedzie widac przyciskow "x" "minimalize i etc" program ma mozliwosc sterowania przegladarka i moze wlaczac lub wylaczac visible okna przegladarki ale sa takie momenty ze musze widziec okno Ultimion Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.