Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 5093|Відповідь: 2

[Джерело] [WebView2] (4) Методи викликової функції Web і WinForm один до одного

[Копіювати посилання]
Опубліковано 29.09.2022 21:03:59 | | | |
Вимоги: У попередній статті йшлося про те, як реалізувати веб-інтерфейс і додаток WinForm для взаємодії між собою для надсилання повідомлень, але лише повідомлення було успішно надіслано, і інформацію про відповідь отримати не вдалося. Що, якщо C#-клієнт викликає функціональний метод вебу, щоб отримати результат повернення? І як веб викликає код C# і отримує повернене значення?

Огляд:

[WebView2] (1) Початкове знайомство з технологією Microsoft Edge WebView2
https://www.itsvse.com/thread-10361-1-1.html

[WebView2] (2) WinForm вводить WebView2 для відображення веб-контенту
https://www.itsvse.com/thread-10362-1-1.html

WebView2 (3) Двонаправлена комунікація між веб- та WinForm-додатками
https://www.itsvse.com/thread-10364-1-1.html
Спершу давайте розглянемо рендери реалізації, вебсайт викликає додаток 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) з таким кодом:

Нарешті, натисніть кнопку на передній частині, щоб отримати дані з буфера обміну, ефект виглядає так:



(Кінець)





Попередній:WebView2 (3) Двонаправлена комунікація між веб- та WinForm-додатками
Наступний:【Turn】CURL використовує проксі, і вводяться проксі
Опубліковано 08.10.2022 15:07:01 |
Вивчи це
Опубліковано 31.03.2023 13:30:38 |
Вчіться на ньому, дякую, що поділилися
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com