Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 5093|Yanıt: 2

[Kaynak] [WebView2] (4) Web ve WinForm birbirlerine fonksiyon metlerini çağırır

[Bağlantıyı kopyala]
Yayınlandı 29.09.2022 21:03:59 | | | |
Gereksinimler: Önceki makale, web arayüzü ve WinForm uygulamasının birbirleriyle iletişim kurarak mesaj göndermek için nasıl uygulanacağını yazmıştı, ancak yalnızca mesaj başarılı şekilde gönderildi ve yanıt bilgisi alınamadı. Ya C# istemcisi dönüş sonucunu almak için web'den bir fonksiyon metodu çağırırsa? Ve web C# kodunu nasıl çağırıp iade değerini alıyor?

Eleştiri:

[WebView2] (1) Microsoft Edge WebView2 teknolojisine ilk giriş
https://www.itsvse.com/thread-10361-1-1.html

[WebView2] (2) WinForm, web içeriğini görüntülemek için WebView2'yi tanıtıyor
https://www.itsvse.com/thread-10362-1-1.html

WebView2 (3) Web ile WinForm uygulamaları arasında çift yönlü iletişim
https://www.itsvse.com/thread-10364-1-1.html
Öncelikle, uygulama renderlerine bakalım, web sitesi WinForm uygulamasını çağırıyorPano verilerini alın, WinForm uygulamasıGeri dönüş değerini almak için web'in abc yöntemini arayınŞöyle:



C# ise Web fonksiyonu yöntemini çağırır

Bu senaryo, webde JavaScript'in nasıl çalıştırılacağını gösteriyor. Bu yöntemde, ana uygulama çalıştırılacak JavaScript kodunu belirler ve kodu ExecuteScriptAsync ile web'e iletir. ExecuteScriptAsync fonksiyonu, JavaScript sonucunu ExecuteScript çağırıcısına döndürür.

Angular index.html sayfa kodu şu şekildedir:

Ön uç esas olarak bir abc fonksiyonunu tanımlar.

Winform, web'in abc fonksiyonunu aşağıdaki kodla çağırır:



Bir web sayfası C# fonksiyon metodu çağırır

Yerel nesneleri web'e aktarmak. Nesneyi web'den çağırma yöntemi çağrılır.

Bir metot çağrısını temsil eden bir mesajı kullanmak için AddHostObjectToScript API'sini kullanın. Yüksek düzeyde, bu API yerel (host) nesnelerin web'e açılmasına ve proxy olarak hareket etmesine olanak tanır. window.chrome.webview.hostObjects kullanın. {name}>a0> bu nesnelere erişin. Referans Dokümantı:Bağlantı girişi görünür.

Web sayfasında yeni bir buton oluşturun, sistemin mevcut panosunun verilerini almak için C# kodunu çağırmak için düğmeye tıklayın.

Angular app.component.html kodu şöyledir:

app.component.ts kodu şöyledir:

Ön uç JS kodu senkron çağrılar ve asenkron çağrılar içerir.

c# WebView2HostObject ana nesnesini aşağıdaki kodla tanımlar:


Not: Özel WebView2HostObject sınıfları etiketlenmelidir[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]property, aksi takdirde JS sınıfa erişemezdi.

Daha sonra yeni tanımlanmış örneği AddHostObjectToScript(String,Object) aracılığıyla aşağıdaki kodla ekleyin:

Son olarak, ön uçtaki butona tıklayarak pano verilerini elde edin, etki şu şekildedir:



(Son)





Önceki:WebView2 (3) Web ile WinForm uygulamaları arasında çift yönlü iletişim
Önümüzdeki:【Turn】CURL komutu proxy kullanır ve proxy'ler tanıtılır
Yayınlandı 8.10.2022 15:07:01 |
Öğren
Yayınlandı 31.03.2023 13:30:38 |
Bundan ders alın, paylaştığın için teşekkürler
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com