PIAMMultiMedianStream = ^IAMMultiMediaStream;
PPIAMMultiMedianStream = ^PIAMMultiMediaStream;
IAMMultiMediaStream = record
  .....
end;var
  pAMStream: PIAMMultiMediaStream;
begin
  if(CoCreateInstance( CLSID_AMMultiMediaStram,nil,CLSCTX_INPROC_SERVER,
     PPIAMMultiMedianStream(pAMSTream^))end;

解决方案 »

  1.   

    就是建立一个接口,看李维的书就可以高清楚了,那本ADO/MTS/COM+上面讲的比较清楚
      

  2.   

    function CoCreateInstance(const clsid: TCLSID; unkOuter: IUnknown;
      dwClsContext: Longint; const iid: TIID; out pv): HResult; stdcall;
    ------------
    var K:IAMMultiMediaStream;
    CoCreateInstance(CLSID_AMMultiMediaStream,nil,CLSCTX_INPROC_SERVER,IID_IAMMultiMediaStream,K);
    上面的写法是对的。但是我估计,还是没法运行(就不知你有没有这个接口的定义的头文件)
    如果有这些头文件,就可以直接执行,如果没有,你要自己写这些定义。好像比较烦!
    IAMMultiMediaStream CLSID_AMMultiMediaStream IID_IAMMultiMediaStream
    你得有他们的定义,上面才能运行!
      

  3.   

    编译没有问得。。但是结果是false。。想同的代码在VC中是对的。。怎么回事
      

  4.   

    function CreateComObject(const ClassID: TGUID): IUnknown;
    begin
      OleCheck(CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or
        CLSCTX_LOCAL_SERVER, IUnknown, Result));
    end;
    这试我取自delphi源代码的一段实例,它的result也是一个接口类型。
    所以用一个正确的接口去接它,就可以了。
    如果出错,那试你前面那些定义的事!
      

  5.   

    var
      Obj: IUnknown;
    begin
      if(CoCreateInstance( CLSID_AMMultiMediaStram,nil,CLSCTX_INPROC_SERVER, Obj)
        Result := Obj as IAMMultiMediaStream;
    end; 
      

  6.   

    上面的办法我也试了。。还是不行。。direct show的高手来啊