|
|
Opublikowano 29.09.2022 21:03:59
|
|
|
|

Wymagania: Poprzedni artykuł opisywał, jak zaimplementować interfejs webowy i aplikację WinForm do komunikacji w celu wysyłania wiadomości, jednak tylko wiadomość została pomyślnie wysłana i nie udało się uzyskać informacji odpowiedzi. Co jeśli klient C# wywołuje metodę funkcji w sieci, aby uzyskać wynik zwrotny? A jak web wywołuje kod C# i otrzymuje wartość zwrotną?
Recenzja:
Najpierw przyjrzyjmy się renderowaniu implementacji, którą strona internetowa nazywa aplikacją WinFormPobierz dane z schowka, aplikacja WinFormZadbaj o metodę abc w sieci, aby uzyskać wartość zwrotuNastępujący sposób:
C# wywołuje metodę funkcji Web
Ten scenariusz pokazuje, jak uruchomić JavaScript w sieci. W tej metodzie aplikacja hosta określa kod JavaScript do uruchomienia i przekazuje go do sieci za pomocą ExecuteScriptAsync. Funkcja ExecuteScriptAsync zwraca wynik JavaScript wywoływającemu ExecuteScript.
Kod strony Angular index.html wygląda następująco:
Frontend głównie definiuje funkcję abc.
Winform wywołuje funkcję abc sieci za pomocą następującego kodu:
Strona internetowa wywołuje metodę funkcji w C#
Przekazywanie natywnych obiektów do sieci. Następnie nazywa się metodę wywoływania obiektu z sieci.
Aby użyć wiadomości reprezentującej wywołanie metody, użyj API AddHostObjectToScript. Na wysokim poziomie to API pozwala na udostępnienie natywnych (host) obiektów w sieci i działania jako proxy. Użyj window.chrome.webview.hostObjects. {name}>a0> dostęp do tych obiektów. Dokumentacja referencyjna:Logowanie do linku jest widoczne.
Stwórz nowy przycisk na stronie internetowej, kliknij przycisk, aby wywołać kod C#, aby pobrać dane z aktualnej schowki systemu.
Kod app.component.html Angular wygląda następująco:
app.component.ts kod wygląda następująco:
Kod JS na początku obejmuje wywołania synchroniczne i asynchroniczne.
c# definiuje obiekt hosta WebView2HostObject za pomocą następującego kodu:
Uwaga: Niestandardowe klasy WebView2HostObject muszą być oznaczone tagami[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]property, w przeciwnym razie JS nie miałby dostępu do tej klasy.
Następnie dodaj nowo zdefiniowaną instancję za pomocą AddHostObjectToScript(String,Object) z następującym kodem:
Na koniec kliknij przycisk na froncie, aby pobrać dane ze schowka – efekt wygląda następująco:
(Koniec)
|
Poprzedni:WebView2 (3) Dwukierunkowa komunikacja między aplikacjami Web a WinFormNastępny:【Turn】Polecenie CURL wykorzystuje proxy, a wprowadzone są proxy
|