Exigences : L’article précédent expliquait comment implémenter l’interface web et l’application WinForm pour communiquer entre elles afin d’envoyer des messages, mais seul le message a été envoyé avec succès, et les informations de réponse n’ont pas pu être obtenues. Que se passe-t-il si le client C# appelle une méthode de fonction du web pour obtenir le résultat de retour ? Et comment le web appelle-t-il le code C# et obtient-il la valeur de retour ?
Révision:
Tout d’abord, regardons les rendus de l’implémentation, le site web appelle l’application WinFormObtenir des données du presse-papier, application WinFormAppelez la méthode abc du web pour obtenir la valeur de retourComme suit:
C# appelle la méthode de la fonction Web
Ce scénario montre comment exécuter JavaScript sur le web. Dans cette méthode, l’application hôte spécifie le code JavaScript à exécuter et transmet le code au web avec ExecuteScriptAsync. La fonction ExecuteScriptAsync renvoie le résultat JavaScript à l’appelant ExecuteScript.
Le code de la page Angular index.html est le suivant :
Le frontend définit principalement une fonction abc.
Winform appelle la fonction abc du web avec le code suivant :
Une page web appelle une méthode de fonction C#
Passer des objets natifs vers le web. La méthode d’appel de l’objet depuis le web est alors appelée.
Pour utiliser un message représentant un appel de méthode, utilisez l’API AddHostObjectToScript. À un niveau global, cette API permet d’exposer des objets natifs (hôtes) au web et d’agir comme des proxys. Utilisez windows.chrome.webview.hostObjects. {name}>a0> accédez à ces objets. Documentation de référence :La connexion hyperlientérée est visible.
Créez un nouveau bouton sur la page web, cliquez sur le bouton pour appeler le code C# afin d’obtenir les données du presse-papiers actuel du système.
Le code app.component.html angulaire est le suivant :
app.component.ts code est le suivant :
Le code JS front-end comporte des appels synchrones et des appels asynchrones.
c# définissez un objet hôte WebView2HostObject avec le code suivant :
Note : Les classes personnalisées WebView2HostObject doivent être étiquetées[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]propriété, sinon JS ne pourrait pas accéder à la classe.
Ajoutez ensuite l’instance nouvellement définie via AddHostObjectToScript(String,Object) avec le code suivant :
Enfin, cliquez sur le bouton en interface pour obtenir les données du clipboard, l’effet est le suivant :
(Fin)
|