Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 5093|Antwoord: 2

[Bron] [WebView2] (4) Web- en WinForm-functiemethoden roepen elkaar aan

[Link kopiëren]
Geplaatst op 29-09-2022 21:03:59 | | | |
Vereisten: Het vorige artikel schreef over hoe de webinterface en de WinForm-applicatie met elkaar kunnen communiceren om berichten te verzenden, maar alleen het bericht werd succesvol verzonden en de responsinformatie kon niet worden verkregen. Wat als de C#-client een functiemethode van het web aanroept om het retourresultaat te krijgen? En hoe roept het web C#-code aan en krijgt het de returnwaarde?

Recensie:

[WebView2] (1) Eerste introductie tot Microsoft Edge WebView2-technologie
https://www.itsvse.com/thread-10361-1-1.html

[WebView2] (2) WinForm introduceert WebView2 om webinhoud weer te geven
https://www.itsvse.com/thread-10362-1-1.html

WebView2 (3) Bidirectionele communicatie tussen de web- en WinForm-applicaties
https://www.itsvse.com/thread-10364-1-1.html
Laten we eerst naar de renderings van de implementatie kijken; de website roept de WinForm-applicatie aanHaal klembordgegevens op, WinForm-appRoep de abc-methode van het web aan om de retourwaarde te krijgenAls volgt:



C# roept de Webfunctiemethode aan

Dit scenario laat zien hoe je JavaScript op het web kunt uitvoeren. In deze methode specificeert de host-app de JavaScript-code die moet draaien en geeft de code via ExecuteScriptAsync door aan het web. De functie ExecuteScriptAsync retourneert het JavaScript-resultaat naar de ExecuteScript-caller.

De Angular index.html paginacode is als volgt:

De frontend definieert voornamelijk een abc-functie.

Winform roept de abc-functie van het web aan met de volgende code:



Een webpagina roept een C#-functiemethode aan

Native objecten naar het web sturen. De methode om het object vanuit het web aan te roepen wordt vervolgens aangeroepen.

Om een bericht te gebruiken dat een methodeaanroep vertegenwoordigt, gebruik je de AddHostObjectToScript API. Op hoog niveau maakt deze API het mogelijk om native (host)objecten aan het web bloot te stellen en als proxies te fungeren. Gebruik window.chrome.webview.hostObjects. {naam}>a0> toegang tot deze objecten. Referentiedocumentatie:De hyperlink-login is zichtbaar.

Maak een nieuwe knop aan op de webpagina, klik op de knop om de C#-code aan te roepen en zo de gegevens van het huidige klembord van het systeem te krijgen.

De Angular app.component.html-code is als volgt:

app.component.ts code is als volgt:

De front-end JS-code bevat synchroon en asynchrone aanroepen.

c# definieer een WebView2HostObject-hostobject met de volgende code:


Opmerking: Aangepaste WebView2HostObject-klassen moeten getagd zijn[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]eigendom, anders zou JS geen toegang tot de klasse hebben.

Voeg vervolgens de nieuw gedefinieerde instantie toe via AddHostObjectToScript(String,Object) met de volgende code:

Klik tenslotte op de knop aan de voorkant om de klembordgegevens te krijgen; het effect is als volgt:



(Einde)





Vorig:WebView2 (3) Bidirectionele communicatie tussen de web- en WinForm-applicaties
Volgend:【Turn】CURL commando gebruikt proxies en proxies worden geïntroduceerd
Geplaatst op 08-10-2022 15:07:01 |
Leer het
Geplaatst op 31-03-2023 13:30:38 |
Leer ervan, bedankt voor het delen
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com