Einzelnen Beitrag anzeigen

BobTheBuilder

Registriert seit: 10. Apr 2019
18 Beiträge
 
#6

AW: Probleme mit Interfaces beim Nutzen von Edge/WebView als Ersatz für TWebBrowser

  Alt 21. Nov 2019, 18:51
Falls irgendwann jemand auf das gleiche Problem stößt, wie man Interfaces von WinRT oder auch Com richtig benutzt:

So könnte zB das Interface der HttpRequestMessage aussehen:
Code:
  [WinRTClassNameAttribute('Windows.Web.Http.HttpRequestMessage')]
  IHttpRequestMessage = interface(IInspectable)
  ['{F5762B3C-74D4-4811-B5DC-9F8B4E2F9ABF}']
    procedure Placeholder_ContentGet; safecall;
    procedure Placeholder_ContentPut; safecall;
    procedure Placeholder_HeadersGet; safecall;
    procedure Placeholder_MethodGet; safecall;
    procedure put_Method(value:IHttpMethod); safecall;
    procedure Placeholder_PropertiesGet; safecall;
    procedure Placeholder_RequestUriGet; safecall;
    procedure put_RequestUri(source: IUriRuntimeClass); safecall;
//    procedure Placeholder_TransportInformationGet; safecall;
  end;
Wichtig ist, dass das WinRTClassNameAttribute mit dem aus der header-Datei oder der .idl übereinstimmt und dass natürlich die UUID auch passt.

Alle Methoden, die man nicht braucht, die aber vor den benutzten Methoden stehen, muss man trotzdem als Platzhalter anlegen. Ich hatte hier jetzt nur mit put_Method und put_RequestUri ausprobiert. Die beiden funktionieren aber wie gewünscht. Die Namen der Methoden sind gleich derer in der header-Datei. In der .idl werden die aufgrund von Schlüsselwörtern weggelassen. Also immer schön die Namen aus der header-Datei benutzen.

Wie bekommt man davon jetzt ein Objekt? Mit folgender CoClass:
Code:
THttpRequestMessage = class(TWinRTGenericImportI<IHttpRequestMessage>)
  end;
Hätte ich keine Tomaten auf den Augen gehabt, hätte ich gesehen, dass genauso auch die TWebViewControllProcess Klasse erstellt wird.

Diese THttpRequestMessage kann man jetzt ganz normal vor dem Aufruf von NavigateWithHttpRequestMessage mit .Create erstellen und so befüllen, wie man das für Richtig hält.
  Mit Zitat antworten Zitat