Вимоги: У попередній статті йшлося про те, як реалізувати веб-інтерфейс і додаток WinForm для взаємодії між собою для надсилання повідомлень, але лише повідомлення було успішно надіслано, і інформацію про відповідь отримати не вдалося. Що, якщо C#-клієнт викликає функціональний метод вебу, щоб отримати результат повернення? І як веб викликає код C# і отримує повернене значення?
Огляд:
Спершу давайте розглянемо рендери реалізації, вебсайт викликає додаток WinFormОтримати дані з буфера обміну, додаток WinFormВикликайте метод abc вебу, щоб отримати повернене значенняНаступним чином:
C# викликає метод веб-функції
Цей сценарій показує, як запускати JavaScript у вебі. У цьому методі хост-додаток визначає JavaScript-код для запуску і передає його до вебу за допомогою ExecuteScriptAsync. Функція ExecuteScriptAsync повертає результат JavaScript викликачу ExecuteScript.
Код сторінки Angular index.html виглядає так:
Фронтенд переважно визначає функцію abc.
Winform викликає функцію abc вебу за допомогою наступного коду:
Веб-сторінка викликає метод функції C#
Передача нативних об'єктів у веб. Тоді викликається метод виклику об'єкта з вебу.
Щоб використати повідомлення, яке представляє виклик методу, використовуйте API AddHostObjectToScript. На високому рівні цей API дозволяє нативним (хост-об'єктам) відкриватися у веб і виступати як проксі. Використовуйте window.chrome.webview.hostObjects. {name}>a0> доступ до цих об'єктів. Довідкова документація:Вхід за гіперпосиланням видно.
Створіть нову кнопку на веб-сторінці, натисніть на неї, щоб викликати код C# і отримати дані поточного буфера обміну системи.
Код Angular app.component.html виглядає так:
app.component.ts код виглядає так:
Код фронтенду JS має синхронні та асинхронні виклики.
c# визначаємо об'єкт хоста WebView2HostObject з таким кодом:
Примітка: Власні класи WebView2HostObject мають бути позначені тегами[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]власності, інакше JS не змогла б отримати доступ до класу.
Потім додайте нововизначений екземпляр через AddHostObjectToScript(String,Object) з таким кодом:
Нарешті, натисніть кнопку на передній частині, щоб отримати дані з буфера обміну, ефект виглядає так:
(Кінець)
|