Anforderungen: Der vorherige Artikel beschrieb, wie man die Weboberfläche und die WinForm-Anwendung implementiert, um miteinander zu kommunizieren, um Nachrichten zu senden, aber nur die Nachricht wurde erfolgreich gesendet und die Antwortinformationen konnten nicht abgerufen werden. Was ist, wenn der C#-Client eine Funktionsmethode des Webs aufruft, um das Rückgabeergebnis zu erhalten? Und wie ruft das Web C#-Code auf und erhält den Rückgabewert?
Rezension:
Schauen wir uns zunächst die Renderings der Implementierung an, die Website ruft die WinForm-Anwendung aufHol dir Daten aus dem Zwischenbrett., WinForm-AppRufen Sie die abc-Methode des Webs auf, um den Rückgabewert zu erhaltenFolgendermaßen:
C# ruft die Webfunktionsmethode auf
Dieses Szenario zeigt, wie man JavaScript im Web ausführen kann. Bei dieser Methode gibt die Host-App den JavaScript-Code an, der ausgeführt werden soll, und übergibt den Code mit ExecuteScriptAsync an das Web. Die Funktion ExecuteScriptAsync gibt das JavaScript-Ergebnis an den ExecuteScript-Aufrufer zurück.
Der Seitencode von Angular index.html ist wie folgt:
Das Frontend definiert hauptsächlich eine abc-Funktion.
Winform ruft die abc-Funktion des Webs mit folgendem Code auf:
Eine Webseite ruft eine C#-Funktionsmethode auf.
Native Objekte ins Netz weitergeben. Die Methode, das Objekt aus dem Web aufzurufen, wird dann aufgerufen.
Um eine Nachricht zu verwenden, die einen Methodenaufruf repräsentiert, verwenden Sie die AddHostObjectToScript-API. Auf hoher Ebene ermöglicht diese API es, native (Host-)Objekte dem Web zugänglich zu machen und als Proxys zu fungieren. Verwenden Sie window.chrome.webview.hostObjects. {name}>a0> Zugriff auf diese Objekte. Referenzdokumentation:Der Hyperlink-Login ist sichtbar.
Erstelle einen neuen Button auf der Webseite, klicke auf den Button, um den C#-Code aufzurufen und die Daten der aktuellen Zwischenablage des Systems zu erhalten.
Der Angular-app.component.html-Code ist wie folgt:
app.component.ts Code lautet wie folgt:
Der Frontend-JS-Code enthält synchrone und asynchrone Aufrufe.
c# ein WebView2HostObject-Hostobjekt mit folgendem Code definieren:
Hinweis: Benutzerdefinierte WebView2HostObject-Klassen müssen getaggt sein[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]Property, andernfalls hätte JS keinen Zugriff auf die Klasse.
Fügen Sie dann die neu definierte Instanz über AddHostObjectToScript(String,Object) mit folgendem Code hinzu:
Klicken Sie schließlich auf den Button auf der Vorderseite, um die Zwischenablagedaten zu erhalten; der Effekt ist wie folgt:
(Ende)
|