Čekání na nahrání stránky IE   otázka

VB.NET

Dobrý den,

moje aplikace otevírá v IE určitou stránku. Jak bych mohl v aplikaci počkat až se celá stránka v IE načte?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Použijte komponentu System.Windows.Forms.WebBrowser pro zobrazení stránky přímo v aplikaci a její událost DocumentCompleted, která nastává v momentě dokončení načítání stránky.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

nevím jestli to takhle bude fungovat, protože chci s cache exploreru vytahovat nějaké soubory

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mělo by, komponenta WebBrowser používá jádro Internet Exploreru.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

používá jádro, ale teď jsem zjistil, že je tam trošku problém. funkce WebBrowser1DocumentCompleted totiž nečeká pokud stránka načítá obrázky přes flash a rozeběhne se když je načtený poze obsah stránky. Nevěděl by někdo jak počkat na kompletní nahrání stránky včetně obrázků, které se načítají přes flash?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

To půjde asi těžko, pokud ten Flash není Váš a nevyvoláte jím nějaký skript ve stránce, který by se pak už dal odchytit. Flash samotný ale běží v jiném runtimu, než WebBrowser a jeho síťové požadavky také, takže DocumentCompleted se vyvolá správně, když se stáhne vše, co stahuje Internet Explorer, ale to, co stahuje Flash, to už nezjistíte, pokud nemáte přístup ke kódu toho flashe.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

No napadlo mě řešení:

1) Flash stahuje do cache exploreru ze stránky pokaždé 6 obrázků, poslední stahuje soubor, který končí pokaždé na stejný řetězec *-2-3.jpg

2) jak ošetřit aby program hlídal stažení posledního 6 souboru, tak aby byl uložen už celý, napadlo mě kontrolovat jeho velikost a v okamžiku, kde už se nebude po nějakou dobu zvětšovat tak by měl být soubor uložený celý

3) teoreticky to mám vymyšlený teď ještě nějaký kod :-) nic mě nenapadá, ještě to hlídání posledního souboru bych nějak udělal přes FileSystemWatcher - to bych ještě někde našel jak by se to napsala, ale ta kontrola velikosti souboru je asi momentálně nad moje síly. Dík za každý názor

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vy znáte jméno jen posledního souboru, nebo všech šesti souborů? Pokud byste znal jména všech šesti, nebo je dokázal sestavit na základě obsahu dokumentu, měl byste celkem vyhráno, protože:

http://msdn.microsoft.com/en-us/library/...

Toto volání vrátí strukturu, která poskytne lokální adresu cacheovaného souboru. Předpokládám, že dokud není soubor kompletně stažen, volání selže s chybou ERROR_FILE_NOT_FOUND. Nicméně i kdyby ne, ta stejná struktura poskytuje i informaci o velikosti souboru v cache.

http://blog.datalisto.com/2008/08/access...

Tady je blogpost o použití té funkce v C#, který by Vám mohl pomoci. Postup vymyšlený máte, takže by mělo stačit po načtení stránky v IE cyklicky kontrolovat existenci všech šesti cacheovaných souborů a pokud existují a mají správnou velikosti, máte co potřebujete.

Hezké by bylo, kdyby IE svou cache mapovalo na nějakou statickou nebo snadno sestavitelnou cestu (například nějak odvozenou z url zdroje cacheovaného souboru), nicméně co jsem se tak dočetl, funguje to trochu jinak (jak diskutuje i ten blogpost výše). Přeji hodně úspěchů, vybral jste si docela velký oříšek :-)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

momentálně to dělám přes FileSystemWatcher, hlídám poslední soubor, až se objeví na disku hlídám chybu při přesunutí zda ho nepoužívá jiná aplikace, až se nevrací chyba tak poslední soubor přesunu. Doufám že to není nad moje síly, jsem začátečník :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Popravdě by mě zajímalo na co tohle může být dobré...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

pokud někdo chce vědět důvod může mě oslovit na emailu [email protected]

týká se to rodokmenů a stahování matrik

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback