Hallo zusammen,
(Ich benutze Delphi 10.3, aber das kann man irgendwie nicht auswählen)
ich habe gemerkt, dass ich mich mit Interfaces überhaupt nicht auskenne und auf dem Schlauch stehe, um eine theoretisch sehr einfache Erweiterung an einem Beispiel vorzunehmen.
Beispiel kommt aus der Antwort von hier:
https://stackoverflow.com/questions/...lphi-c-builder
Einfach den Code in eine Form kopieren (und vielleicht den Form-Namen berichtigen) und schon hat man Edge als Steuerelement in einer Form laufen.
Ich benötige jetzt die Möglichkeit, das Steuerelement eine POST Anfrage machen zu lassen.
Da ich sowieso schon auf Stackoverflow das Beispiel gefunden hatte, habe ich mir gedacht, dass ich das auch direkt dort frage, auch wenn es leider bisher keine lösenden Antworten gegeben hat:
https://stackoverflow.com/questions/...69770#58869770
Deswegen habe ich mir gedacht, dass ja eventuell hier jemand den Durchblick hat und mir helfen kann:
Ich will das IWebViewControl Interface um diese procedure erweitern:
Code:
procedure NavigateWithHttpRequestMessage(requestMessage: IHttpRequestMessage); stdcall;
Dazu brauche ich jedoch jetzt das
IHttpRequestMessage Interface, das ich mir im Windows 10 Kit rausgesucht habe:
Code:
[exclusiveto(Windows.Web.Http.HttpRequestMessage)]
[uuid(F5762B3C-74D4-4811-B5DC-9F8B4E2F9ABF)]
interface IHttpRequestMessage : IInspectable
{
[propget] HRESULT Content([out] [retval] Windows.Web.Http.IHttpContent** value);
[propput] HRESULT Content([in] Windows.Web.Http.IHttpContent* value);
[propget] HRESULT Headers([out] [retval] Windows.Web.Http.Headers.HttpRequestHeaderCollection** value);
[propget] HRESULT Method([out] [retval] Windows.Web.Http.HttpMethod** value);
[propput] HRESULT Method([in] Windows.Web.Http.HttpMethod* value);
[propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMap<HSTRING, IInspectable*>** value);
[propget] HRESULT RequestUri([out] [retval] Windows.Foundation.Uri** value);
[propput] HRESULT RequestUri([in] Windows.Foundation.Uri* value);
[propget] HRESULT TransportInformation([out] [retval] Windows.Web.Http.HttpTransportInformation** value);
}
Wenn ich das richtig verstanden habe, ist das die (teilweise) Übersetzung:
Code:
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 Placeholder_MethodPut; safecall;
procedure Placeholder_PropertiesGet; safecall;
procedure Placeholder_RequestUriGet; safecall;
procedure Placeholder_RequestUriPut; safecall;
procedure Placeholder_TransportInformationGet; safecall;
end;
Was ich nun garnicht verstehe: Wie erzeuge ich davon nun ein Objekt?
Ich habe schonmal in die TLBs von
Activex DLLs reingeguckt und gesehen, dass die passenden Objekte per CreateComObject() erzeugt werden, aber wenn ich die
GUID des Interfaces da rein gebe, dann sagt er mir, dass die Klasse nicht registriert wäre. Übersehe ich da etwas Offensichtliches oder bin ich vielleicht völlig auf dem Holzweg?
Vielleicht hat ja einer von euch etwas mehr Ahnung von Interfaces und kann mir zumindest die generelle Richtung weisen.