Îmbunătățirea browserului de la mozilla pe motorul gecko în c #, este un blog expert

Dacă utilizați un browser în proiectele dvs. în C #. bazat pe motorul de la Mozilla Gecko. atunci probabil ați observat că caracteristicile sale standard, ei doresc să lase cele mai bune. Aceasta înseamnă că dacă utilizați o bibliotecă Skybound.GeckoFX mai curată decât o modificare. Desigur, ar trebui să mulțumim dezvoltatorilor acestui motor și acestei biblioteci. Este mai bine să aveți puțin decât să nu aveți nimic. Dar pe această bibliotecă nu veți merge "departe" (deși depinde de cine are scopuri). Deoarece are cea mai mică funcționalitate necesară. Dar poate fi extins la o listă colosală de posibilități diferite. Dacă doriți să gestionați anumite operații programat, trebuie să declarați interfețele necesare și să descrieți implementarea metodelor de care aveți nevoie. În acest articol voi demonstra cum să extindeți funcționalitatea bibliotecii Skybound.GeckoFX.







Rețineți că, după fiecare modificare a bibliotecii, este necesar ca în proiectul dvs. să înlocuiți linkul, cu o nouă versiune reasamblată.

Eliminarea modulelor cookie

Abilitatea de a șterge cookie-urile este una dintre cele mai necesare caracteristici ale browser-ului. Pentru a putea șterge cookies în browserul dezvoltat, este necesar în modulul nsInterfaces.cs. adăugați descrierea următoarei interfețe:

Interfața are două metode de lucru cu modulele cookie: RemoveAll și Remove. Implementăm o metodă de ștergere simultană a tuturor cookie-urilor, pentru care trebuie să descriem implementarea metodei RemoveAll. Descrierea metodelor de implementare a funcțiilor suplimentare pe care le propun să le fac în modulul GeckoWebBrowser.cs. Acum adăugați următorul cod în modul:

Acum, în proiectul dvs., dacă trebuie să ștergeți cookie-ul, trebuie să apelați metoda din componenta GeckoWebBrowser - DeleteCookie ().

Configurarea serverului proxy

Specificăm configurarea manuală a serverului proxy:

Specificați gazda pe care o folosim:

Ei bine, respectiv, numărul portului:

Pentru a specifica setările care lipsesc în proiectul propriu-zis, și nu pentru a introduce login-ul și parola de fiecare dată manual, va trebui să faceți din nou modificări în bibliotecă. Deoarece nu există caracteristici standard pentru specificarea parolei și a parolei în codul proiectului, biblioteca în sine nu o are. Din fericire, nu totul este la fel de trist cum ar părea la prima vedere. Nu este nici măcar necesară declararea unei noi interfețe. Tot ce trebuie să faceți este să deschideți modulul PromptService.cs. Găsiți metoda PromptAuth în ea și o înlocuiți cu codul de mai jos:

Mai departe, în codul proiectului, în locul de care aveți nevoie, trebuie să adăugați următoarele două linii:

Emularea evenimentelor

După ce am adăugat noi interfețe, trebuie să adăugăm două metode pentru implementarea emulației evenimentului de la mouse și tastatură în modul deja familiar GeckoWebBrowser.cs:

Acum suntem gata și trebuie să recompilăm biblioteca, iar apoi poate fi conectată la proiect. Ca exemplu de emulare a unui clic, luați în considerare următorul cod:

Ca rezultat al acestui cod, va fi generat un eveniment "onclick", pentru un element din coordonatele left = 0, top = 0, width = 0 și height = 0.

Buna ziua!
Doriți să aveți autorizație automată pentru proxy sau nu?

Întrebările despre clocot au devenit mai mult decât metoda descrisă, au emis cele două erori pentru prima inferență de tip implicit și trebuie să specificați explicit argumentul. Eroare 1 Conversia implicită a tipului de "obiect" la

"Skybound.Gecko.nsICookieManager" nu este posibil. Există o conversie explicită (poate să nu existe o distribuție) C: \ Users \ Nikita \ Desktop \ src - copiați \ Skybound.Gecko \ GeckoWebBrowser.cs 114 25 Skybound.Gecko







Eroare 2 Argumentul de tip pentru metoda "Skybound.Gecko.Xpcom.QueryInterface (obiect)" nu poate fi obținut din datele de utilizare. Încercați să specificați explicit argumentele de tip. C: \ Users \ Nikita \ Desktop \ src - copiați \ Skybound.Gecko \ GeckoWebBrowser.cs 115 25 Skybound.Gecko

Va trebui să rescriu codul.

Ți-am trimis un e-mail la ansamblul original.

Am această problemă că nu pot încărca site-ul, scriu o eroare cu certificate cum să-ți dezactivez verificarea Eroare Cod de eroare: sec_error_expired_issuer_certificate HELP.

Bună ziua! Cu asta nu am întâlnit-o.

Am rezolvat problema prin descărcarea pur și simplu a ansamblului motorului xulrunner-1.9.0.3.en-US.win32.sdk și a existat înainte de xulrunner-1.9.0.1.en-US.win32.sdk. Este nevoie de o construcție mai nouă, chiar dacă motivul pentru care în vechea eroare a apărut greșit.

Iată cum: GeckoPreferences.User ["permissions.default.image"] = 1;. Iată celelalte setări.

Extrem de recunoscător pentru ajutor și pe site puteți găsi o metodă care dezactivează verificarea certificatelor din ansamblurile vechi de motoare pe care le-ați super.

care dezactivează verificarea certificatului?
cum.

Nu am dat peste asta.

Bună ziua. Dă-mi un astfel de lucru este posibil de exemplu, la încărcarea formularului de conectare în e-mail în browser sau nu întreaga pagină reticente la expediere și mai mult de proxy sunt greu de cap, am doar a scrie un program va trimite prietenilor mei ca email-uri cu locuri de muncă și trebuie să fac forme podgruzku GeckoWebBrowser și să treacă în textbox-si cele mai multe forme de conectare și parola de DataGridView bine sau dintr-o variabilă am fost eu acolo, voi adăuga după cum este necesar.

Nu, nu știu ce să fac. Din moment ce obțineți tot codul html.

Și mi-am amintit în browser-ul obișnuit încorporat în Visual Studio există o metodă numită geckoWebBrowser1.Document.GetElementById ("aici butonul id") InvokeMember ("Click"); pentru a face clic pe un buton din pagină, dar în acest browser nu se utilizează arata există o alternativă.

1) De asemenea, puteți accesa articole după ID sau nume.
Iată un exemplu de identificare a unui element cu un identificator ("id-2"):
GeckoElement node = this.Mozilla.Document.GetElementById ("id-2");
2) Este cu siguranță posibil să se implice evenimente. Dar nu în biblioteca standard. Trebuie să adăugați o interfață și să adăugați cod la proiectul propriu-zis cu biblioteca. Și aici nu voi putea să vă explic cum se întâmplă acest lucru, deoarece aceasta este o "tragere" pentru întregul articol.

1) Adresa dvs. de e-mail este incorectă. Am vrut să resetați modulele cu un exemplu de emulare de evenimente.
2) Am văzut felul în care ați găsit. Resurse, unde am dat odată informații despre lucrul cu motorul, nu-mi amintesc deja. Au trecut câțiva ani.

Trimite-mi [email protected] și am dat seama că am avea nevoie pentru munca mea o altă metodă de a nu încărca întreaga pagină am nevoie de bibliotecă Xnet și pentru a genera o cerere la server, și apoi descărcați captcha în Webrover sau picturebox Ei bine, în general, face totul repede și proxy-ul de o jumătate de oră nu a încărcat totul, dar tu trimite-l la corespondența mea brusc vino la îndemână
---------------------------
Mulțumesc pentru ajutor și îmi pare rău că mi-am furat puțin timp. Voi înțelege cum să imităm evenimentele de intrare în formularul de date de pe site.

Coordonatele (X) și (Y) din articol oferă un exemplu de clic pe coordonatele elementului
Pe timer citit în cartea pe C #
Găsiți toate link-urile și selectați aleatoriu pentru un clic, de asemenea cu alte elemente.
Informațiile ca atare lipsesc (pot fi accesate numai pe site-uri în limba engleză). Tot ce aveți nevoie este în articol (cu excepția cronometrului).

Am intrebat cum sa fac asta, astfel incat NU pe coordonatele clicului sa fie pe pictograma butonului butonului de text. pe panta pluginului iMacros

Cea mai importantă primă etapă din trei linii nu poate trece prin scrierea unei mazile nu există. pot vedea tot codul? unde scriu sau nu?

1. Nu am capacitatea de a verifica, dar se pare că obiectele GeckoElement ar trebui să aibă o metodă Click ().
2. Ce cod?

Bună ziua!
Spune-mi cum să testez proxy-ul. Și apoi, dacă proxy-ul nu funcționează, obțin acest lucru: conexiunea serverului proxy refuzat ...
Cum pot procesa automat acest lucru? pentru a pune un alt proxy. Și apoi există proxy de lucru, atunci totul este ok. Și dacă nu un lucrător, atunci totul se oprește.

Noapte bună!
În teorie, desigur, trebuie să existe posibilitatea unei definiții. La urma urmei, există oportunități mult mai serioase. Dar nu trebuia să mă ocup de astfel de lucruri. Singurul lucru pe care îl pot oferi momentan este să direcționez pagina cu textul "Serverul proxy refuză conexiunile".

Bună ziua. În GeckoWebBrowser.cs a introdus
public void EmulationMouseEvent (... ..
....
...

au dat erori de tipul:
Eroare 1 Metoda cea mai potrivită pentru supraîncărcat «Skybound.Gecko.nsIDOMMouseEvent.InitMouseEvent (Skybound.Gecko.nsAString, bool, bool, System.IntPtr, int, int, int, bool, bool, bool, bool, ushort, Skybound.Gecko.nsIDOMEventTarget) »are unele argumente invalide C: \ Libs \ C # \ SuperGecko \ Skybound.Gecko \ GeckoWebBrowser.cs 1936 13 Skybound.Gecko
Eroare 2 argument "4": transformarea tipului de «Skybound.Gecko.nsIDOMAbstractView» în «System.IntPtr“ nu poate fi C: \ Libs \ C # \ SuperGecko \ Skybound.Gecko \ GeckoWebBrowser.cs 1936 62 Skybound.Gecko

Vrei să te ajuți? dacă puteți trimite un modul de lucru la poștă, codul sursă?

Și am trimis biblioteca mea modificată la oficiul poștal.







Trimiteți-le prietenilor: