Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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