Reikalavimai: Ankstesniame straipsnyje rašyta apie tai, kaip įdiegti žiniatinklio sąsają ir "WinForm" programą, kad būtų galima bendrauti tarpusavyje ir siųsti pranešimus, tačiau tik pranešimas buvo sėkmingai išsiųstas, o atsakymo informacijos gauti nepavyko. Ką daryti, jei C# klientas iškviečia žiniatinklio funkcijos metodą, kad gautų grąžinimo rezultatą? Ir kaip žiniatinklis iškviečia C# kodą ir gauna grąžinamąją vertę?
Peržiūra:
Pirma, pažvelkime į atvaizdus įgyvendinimo, interneto svetainė kviečia WinForm programąGaukite mainų srities duomenis, "WinForm" programaIškvieskite žiniatinklio abc metodą, kad gautumėte grąžinamąją reikšmęTaip:
C# iškviečia žiniatinklio funkcijos metodą
Šiame scenarijuje parodyta, kaip paleisti "JavaScript" žiniatinklyje. Taikant šį metodą, pagrindinė programa nurodo "JavaScript" kodą, kurį reikia paleisti, ir perduoda kodą žiniatinkliui su "ExecuteScriptAsync". Funkcija ExecuteScriptAsync grąžina JavaScript rezultatą ExecuteScript iškvietusiui.
"Angular index.html" puslapio kodas yra toks:
Sąsaja daugiausia apibrėžia abc funkciją.
"Winform" iškviečia žiniatinklio funkciją abc tokiu kodu:
Tinklalapis iškviečia C# funkcijos metodą
Vietinių objektų perdavimas žiniatinkliui. Tada iškviečiamas objekto iškvietimo iš žiniatinklio būdas.
Norėdami naudoti pranešimą, nurodantį metodo iškvietimą, naudokite AddHostObjectToScript API. Aukštu lygiu ši API leidžia vietiniams (pagrindiniams) objektams patekti į žiniatinklį ir veikti kaip tarpiniai serveriai. Naudokite window.chrome.webview.hostObjects. {name}>a0> pasiekti šiuos objektus. Informaciniai dokumentai:Hipersaito prisijungimas matomas.
Sukurkite naują mygtuką tinklalapyje, spustelėkite mygtuką, kad iškviestumėte C# kodą, kad gautumėte dabartinės sistemos mainų srities duomenis.
"Angular app.component.html" kodas yra toks:
app.component.ts kodas yra toks:
Priekinis JS kodas turi sinchroninius skambučius ir asinchroninius skambučius.
c# apibrėžkite WebView2HostObject pagrindinio kompiuterio objektą naudodami šį kodą:
Pastaba: Pasirinktinės WebView2HostObject klasės turi būti pažymėtos[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]savybė, kitaip JS negalėtų prieiti prie klasės.
Tada pridėkite naujai apibrėžtą egzempliorių naudodami AddHostObjectToScript(String,Object) su šiuo kodu:
Galiausiai spustelėkite mygtuką priekinėje dalyje, kad gautumėte mainų srities duomenis, efektas yra toks:
(Pabaiga)
|