Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 5093|Respuesta: 2

[Fuente] [WebView2] (4) Métodos de función Web y WinForm entre sí

[Copiar enlace]
Publicado en 29/9/2022 21:03:59 | | | |
Requisitos: El artículo anterior hablaba sobre cómo implementar la interfaz web y la aplicación WinForm para comunicarse entre sí y enviar mensajes, pero solo el mensaje se enviaba con éxito y la información de respuesta no se podía obtener. ¿Qué pasa si el cliente C# llama a un método de función de la web para obtener el resultado de retorno? ¿Y cómo llama la web al código C# y obtiene el valor de retorno?

Revisión:

[WebView2] (1) Introducción inicial a la tecnología Microsoft Edge WebView2
https://www.itsvse.com/thread-10361-1-1.html

[WebView2] (2) WinForm introduce WebView2 para mostrar contenido web
https://www.itsvse.com/thread-10362-1-1.html

WebView2 (3) Comunicación bidireccional entre las aplicaciones Web y WinForm
https://www.itsvse.com/thread-10364-1-1.html
Primero, veamos los renderizados de la implementación, el sitio web llama a la aplicación WinFormObtener datos de portapapeles, aplicación WinFormLlama al método abc de internet para obtener el valor de retornoComo sigue:



C# llama al método de función Web

Este escenario muestra cómo ejecutar JavaScript en la web. En este método, la aplicación anfitriona especifica el código JavaScript a ejecutar y pasa el código a la web con ExecuteScriptAsync. La función ExecuteScriptAsync devuelve el resultado de JavaScript al llamador ExecuteScript.

El código de página de Angular index.html es el siguiente:

El frontend define principalmente una función abc.

Winform llama a la función abc de la web con el siguiente código:



Una página web llama a un método de función C#

Pasar objetos nativos a la web. Entonces se llama al método de llamar al objeto desde la web.

Para usar un mensaje que represente una llamada a método, utiliza la API AddHostObjectToScript. A un nivel general, esta API permite exponer objetos nativos (host) a la web y actuar como proxies. Usa windows.chrome.webview.hostObjects. {name}>a0> accede a estos objetos. Documentación de referencia:El inicio de sesión del hipervínculo es visible.

Crea un nuevo botón en la página web, haz clic en el botón para llamar al código C# y obtener los datos del portapapeles actual del sistema.

El código de app.component.html angular es el siguiente:

app.component.ts código es el siguiente:

El código JS frontal tiene llamadas síncronas y llamadas asíncronas.

c# define un objeto host WebView2HostObject con el siguiente código:


Nota: Las clases personalizadas de WebView2HostObject deben estar etiquetadas[ClaseInterface(ClaseTipoTipo.AutoDual)]、[ComVisible(true)]propiedad, de lo contrario JS no podría acceder a la clase.

Luego añade la instancia recién definida mediante AddHostObjectToScript(String,Object) con el siguiente código:

Por último, haz clic en el botón de la interfaz para obtener los datos de la carpeta y el efecto es el siguiente:



(Fin)





Anterior:WebView2 (3) Comunicación bidireccional entre las aplicaciones Web y WinForm
Próximo:【Turn】El comando CURL utiliza proxies y se introducen proxies
Publicado en 8/10/2022 15:07:01 |
Apréndelo
Publicado en 31/3/2023 13:30:38 |
Aprende de ello, gracias por compartirlo
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com