Követelmények: Az előző cikk arról írt, hogyan lehet megvalósítani a webfelületet és a WinForm alkalmazást, hogy kommunikáljanak egymással az üzenetek küldéséhez, de csak az üzenet sikeresen elküldődött, és a válaszinformáció nem volt elérhető. Mi van, ha a C# kliens egy web függvény metódust hív meg, hogy megkapja a visszanyerő eredményt? És hogyan hívja a web a C# kódot, és hogyan kapja meg a visszatérési értéket?
Szemle:
Először nézzük meg a megvalósítás rendereléseit, a weboldal WinForm alkalmazást hívSzerezz adatokat a clipboard, WinForm alkalmazásHívd a webes abc módszert, hogy megkapd a hozamértéketKövetkezőképpen:
C# a webfüggvény metódusot hívja
Ez a helyzet megmutatja, hogyan lehet futtatni JavaScriptet a weben. Ebben a módszerben a host alkalmazás megadja a futtatandó JavaScript kódot, majd a kódot az ExecuteScriptAsync segítségével továbbítja a webre. Az ExecuteScriptAsync függvény visszaadja a JavaScript eredményt az ExecuteScript hívónak.
Az Angular index.html oldalkód a következő:
A frontend főként egy abc függvényt határoz meg.
Winform a web abc függvényét a következő kóddal hívja meg:
Egy weboldal C# függvény metódusot hív
Natív objektumok továbbítása a webre. Ezután meghívják az objektum webből történő meghívásának módszerét.
Egy olyan üzenet használatához, amely egy metódushívást képvisel, használja az AddHostObjectToScript API-t. Magas szinten ez az API lehetővé teszi, hogy natív (host) objektumok elérhetővé váljanak a weben, és proxyként működjenek. Használd a windows.chrome.webview.hostObjects. {name}>a0> hozzáférés ezekhez az objektumokhoz. Referencia dokumentáció:A hiperlink bejelentkezés látható.
Hozz létre egy új gombot a weboldalon, kattints rá, hogy hívd a C# kódot, hogy megkapd a rendszer aktuális vágóasztalának adatait.
Az Angular app.component.html kód a következő:
app.component.ts kód a következő:
A front-end JS kód szinkron hívásokat és aszinkron hívásokat tartalmaz.
c# definiál egy WebView2HostObject h-objektumot a következő kóddal:
Megjegyzés: Az egyedi WebView2HostObject osztályokat címkézni kell[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]property, különben a JS nem férne hozzá az osztályhoz.
Ezután hozzáadjuk az újonnan definiált példányt az AddHostObjectToScript(String,Object) segítségével a következő kóddal:
Végül, ha megnyomod a fronton lévő gombot, hogy megkapd a vágóasztal adatait, a hatás a következő:
(Vége)
|