Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Swiftu. Zároveň využij výhodnou slevovou akci až 30 % zdarma při nákupu e-learningu - více informací.
discount 30 + hiring
Avatar
Michal Pflegshörl:16.10.2019 13:14

Ve WinForm aplikaci používám WebBrowser. Příští rok končí Internet Explorer a já mám obavy zda bude WebBrowser i nadále spolehlivě fungovat, protože používá engine Internet Exploreru.

Zkusil jsem: Zkoušel jsem přejít z WebBrowser na WebViewCompatible. Bohužel nevím jak u WebViewCompatible získat DocumentText a GetElementsBy­TagName.

Chci docílit: Potřebuji aby servery, které již nebudou fungovat na Internet Exploreru, nadále fungovaly v prohlížeči mé aplikace.

 
Odpovědět
16.10.2019 13:14
Avatar
Odpovídá na Michal Pflegshörl
Michal Štěpánek:17.10.2019 8:23

Myslím, že montuješ víc věcí do jednoho. Internet Explorer je prohlížeč (jeden z mnoha).

Potřebuji aby servery, které již nebudou fungovat na Internet Exploreru...

Servery běží na nějakém operačním systému, poskytují nějaká data a je jim úplně šumák, v čem si je uživatel bude zobrazovat. Nemají s Internet Explorerem nic společného a v podstatě o jeho existenci ani nevědí.

Nahoru Odpovědět
17.10.2019 8:23
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Michal Pflegshörl:17.10.2019 8:40

Možná, že jsem se asi nevyjádřil úplně správně.
V praxi se mi občas stane, že některé webové systémy, např. Czechpoint, na nějakou dobu (asi než Microsoft nebo správci webu provedou opravu) přestanou fungovat v IE zatímco v Google Chrome nebo Edge fungují bez problémů.

Používám Visual Studio 2015, aplikace je .NET Framework 4.7.2.
Při spouštění formuláře musím použít tento kód

int BrowserVer = webBrowser1.Version.Major;
int RegVal;

if (BrowserVer >= 11)
        RegVal = 11001;
else if (BrowserVer == 10)
        RegVal = 10001;
else if (BrowserVer == 9)
        RegVal = 9999;
else if (BrowserVer == 8)
        RegVal = 8888;
else
        RegVal = 7000;

RegistryKey Key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true);
Key.SetValue(Process.GetCurrentProcess().ProcessName + ".exe", RegVal, RegistryValueKind.DWord);
Key.Close();

Přiznám se, že přesně nevím co dělá, ale díky němu funguje WebBrowser na formuláři stejně jako IE v Pc na kterém aplikace běží.

Pomohlo by mi, kdyby nějak podobně šly přiřadit WebBrowseru vlastnosti Chromu nebo Edge.

 
Nahoru Odpovědět
17.10.2019 8:40
Avatar
Michal Pflegshörl:17.10.2019 10:28

Nastavení Edge jsem snad vyřešil následujíci úpravou

int RegVal;

int WindowsVerzeMajor = Environment.OSVersion.Version.Major;
int WindowsVerzeMinor = Environment.OSVersion.Version.Minor;

if (WindowsVerzeMajor == 10
 || (WindowsVerzeMajor == 6 && WindowsVerzeMinor > 1))
{
        RegVal = 12001;
}
else
{
        int BrowserVer = webBrowser1.Version.Major;

        if (BrowserVer >= 11)
                RegVal = 11001;
        else if (BrowserVer == 10)
                RegVal = 10001;
        else if (BrowserVer == 9)
                RegVal = 9999;
        else if (BrowserVer == 8)
                RegVal = 8888;
        else
                RegVal = 7000;
}

RegistryKey Key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true);
Key.SetValue(Process.GetCurrentProcess().ProcessName + ".exe", RegVal, RegistryValueKind.DWord);
Key.Close();
 
Nahoru Odpovědět
17.10.2019 10:28
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Michal Pflegshörl
Michal Pflegshörl:4.12.2020 8:49

Tak bohužel nastalo to čeho jsem se obával :-(
Na WinFormu mám webBrowser, který se evidentně chová jako IE 11, přestože na Pc je nainstalovaný Edge.
Potřebuji otevřít web zabezpečený TLS 1.2. V Edge otevřít jde, v IE 11 a mé aplikaci se zobrazí chyba se zabezpečením.
Jak donutit webBrowser aby se choval jako Edge (tzn. aby otevřel ten web s TLS 1.2)?

Mnou zmiňované předchozí řešení nezabírá.

Editováno 4.12.2020 8:50
 
Nahoru Odpovědět
4.12.2020 8:49
Avatar
Odpovídá na Michal Pflegshörl
Matyáš Černohous:30.12.2020 0:33

Microsoft vydal novou verzi WebView2, která je postavená na Edge (takže na chromiu). Práce s ní je stejná jako s původním WebView.

Příklad pro WinForms.
https://docs.microsoft.com/…ted/winforms

Dokumentace
https://docs.microsoft.com/…ge/webview2/#…

Editováno 30.12.2020 0:34
 
Nahoru Odpovědět
30.12.2020 0:33
Avatar
Michal Pflegshörl:30.12.2020 14:10

Použití WebView2 by bylo ideální, bohužel nevím jak ve WebView2 používat metody podobné WebBrowser.Do­cumentText (abych získat HTML kód načtené stránky) a WebBrowser.Do­cument.GetEle­mentsByTagName (abych získal kolekci HTML prvků podle jejich typu, např. hypertextové odkazy <a>)

Editováno 30.12.2020 14:12
 
Nahoru Odpovědět
30.12.2020 14:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.