So bin etwas weiter.. Mist wenn man alles selbst herausfinden muss ohne vernünftiges
SDK
Habe eine IID_angelegt und zwar die des Interface ISupportedSites.
IID_ISupportedSites: TGUID = '{FF762ACC-13EC-463A-A29C-FD4B0CD3E019}';
War mir jetzt nicht sicher ob ich mit dieser IID_ arbeiten kann scheint aber richtig zu sein um das Interface zu Initialisieren.
Delphi-Quellcode:
IsURL := (LeftStr(MediaFile, 4) = '
http')
or (LeftStr(MediaFile, 5) = '
https');
if IsUrl
then
begin
if DYDYoutubeFilter <>
nil then
begin
hr := CoCreateInstance(CLSID_DYDYoutube,
nil, CLSCTX_INPROC_SERVER, IID_IBaseFilter, Source);
if SUCCEEDED(hr)
then
begin
Source.QueryInterface(IID_ISupportedSites, SupportedSites);
Version := SupportedSites.GetVersion;
hr := SupportedSites.Test(PWideChar(MediaFile), false,
url);
if SUCCEEDED(hr)
then
begin
x := SupportedSites.GetCount;
if x <> 0
then
begin
for IntI := 0
to x - 1
do
Test := SupportedSites.GetName(IntI);
end;
end;
end;
end;
end;
Die
Url bei SupportedSites.Test ist immer noch Nil sei's drum.
So wie ich das hier verstehe..
Zitat:
When S_OK is returned, canonical_url will contain canonical page
url, otherwise
it will not be changed
Wenn S_OK also die Rückgabe 0 ist dann müsste mir die
URL einen wert zurück liefern, tut sie aber nicht.
GetCount hingegen stimmt genauso werden mir die unterstützten
Url's zurückgegeben die der Filter unterstützt.
Siehe Pic! Die werte stimmen alle.
Muss jetzt noch schauen wie ich das mit der
Url hinbekomme.
Das stimmt jetzt schon mal!
Delphi-Quellcode:
function GetVersion: UINT; stdcall;
// Number of supported sites
function GetCount: UINT; stdcall;
// Get site name or NULL if index >= GetCount()
function GetName(index: UINT): PWideChar; stdcall;
gruss