Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#6

AW: WindowHandle vom Aktiven Renderer

  Alt 14. Sep 2018, 08:58
Zitat:
Baue dir einen ähnlichen Code mit ein und lasse dir per OutputDebugString ausgeben, wie die korrekten Namen sind.
Habe ich versucht und bekomme auch den Pin.
Nur es kracht trotzdem

Delphi-Quellcode:
function FindConnectedPin(pFilter: IBaseFilter; PinDir: PIN_DIRECTION; var ppPin: IPin): HRESULT;
var
  pEnum: IEnumPins;
  pPin: IPin;
  hr: HRESULT;
  bFound: BOOL;
  bIsConnected: BOOL;

begin
  ppPin := nil;

  pEnum := nil;
  pPin := nil;

  hr := pFilter.EnumPins(pEnum);
  if (FAILED(hr)) then
  begin
    result := hr;
    exit;
  end;

  bFound := FALSE;
  while (pEnum.Next(1, pPin, nil) = S_OK) do
  begin
    hr := IsPinConnected(pPin, bIsConnected);
    if (SUCCEEDED(hr)) then
    begin
      if (bIsConnected) then
        hr := IsPinDirection(pPin, PinDir, bFound);
    end;

    if (FAILED(hr)) then
    begin
      pPin := nil;
      break;
    end;
    if (bFound) then
    begin
      ppPin := pPin;
      break;
    end;

    pPin := nil;
  end;

  pEnum := nil;

  if (not bFound) then
    hr := VFW_E_NOT_FOUND;

  result := hr;
end;
FindConnectedPin(FVideoRenderer.VMRFilter, PINDIR_INPUT, pPin);

pPin.QueryInterface(IID_IOverlay, Overlay);
Overlay ist Nil trotz gefundenen Pin und dann kracht es natürlich. (wenn nicht abgesichert)

gruss
  Mit Zitat antworten Zitat