Delphi-Quellcode:
function KVideo_GetActiveRenderWindowHandle: HWND stdcall;
begin
Result := 0;
if not Assigned(EVMRPlayer) then
exit;
if EVMRPlayer.PlayerState = psNotReady then
exit;
Result := EVMRPlayer.GetActiveRenderWindowHandle;
end;
Delphi-Quellcode:
function TEVMRPlayer.GetActiveRenderWindowHandle: HWND;
var
hr: HRESULT;
UnknownInterface: IUnknown;
Overlay: IOverlay;
begin
Result := 0;
// hr := CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, GraphBuilder);
// if Succeeded(hr) then
// begin
hr := FindInterfaceAnywhere(GraphBuilder, IOverlay, UnknownInterface);
if Succeeded(hr) then
begin
hr := UnknownInterface.QueryInterface(IOverlay, Overlay);
if Succeeded(hr) then
Overlay.GetWindowHandle(Result);
end else
ReportError('Create Overlay Error', Hr);
// end;
end;
Fehler Schnittstelle nicht unterstützt.
hr := UnknownInterface.QueryInterface(IID_IOverlay, Overlay);
Oder?
Ich verstehe auch die Herangehensweise nicht.
Der GraphBuilder hat doch nichts mit dem Aktiven Video Render Filter zu tun.
Diese sind
VMR7BaseFilter, VMR9BaseFilter, madVRFilter, EVRBaseFilter
gruss