利用Delphi编写IE扩展(2)

页面导航:首页 > 软件编程 > Delphi > 利用Delphi编写IE扩展(2)

利用Delphi编写IE扩展(2)

来源: 作者: 时间:2016-02-05 11:47 【

typePOleVariant = ^OleVariant;vardps: TDispParams absolute Params;bHasParams: boolean;pDispIds: PDispIdList;iDispIdsSize: integer;beginResult := DISP_E_M

 


type
 POleVariant = ^OleVariant;
var
 dps: TDispParams absolute Params;
 bHasParams: boolean;
 pDispIds: PDispIdList;
 iDispIdsSize: integer;
begin
 Result := DISP_E_MEMBERNOTFOUND;
 pDispIds := nil;
 iDispIdsSize := 0;
 bHasParams := (dps.cArgs > 0);
 if (bHasParams) then
 begin
   iDispIdsSize := dps.cArgs * SizeOf(TDispId);
   GetMem(pDispIds, iDispIdsSize);
 end;
 try
   if (bHasParams) then BuildPositionalDispIds(pDispIds, dps);
   case DispId of
     102:
       begin
         DoStatusTextChange(dps.rgvarg^[pDispIds^[0]].bstrval);
         Result := S_OK;
       end;
     108:
       begin
         DoProgressChange(dps.rgvarg^[pDispIds^[0]].lval, dps.rgvarg^[pDispIds^[1]].lval);
         Result := S_OK;
       end;
     105:
       begin
         DoCommandStateChange(dps.rgvarg^[pDispIds^[0]].lval, dps.rgvarg^[pDispIds^[1]].vbool);
         Result := S_OK;
       end;
     106:
       begin
         DoDownloadBegin();
         Result := S_OK;
       end;
     104:
       begin
         DoDownloadComplete();
         Result := S_OK;
       end;
     113:
       begin
         DoTitleChange(dps.rgvarg^[pDispIds^[0]].bstrval);
         Result := S_OK;
       end;
     112:
       begin
         DoPropertyChange(dps.rgvarg^[pDispIds^[0]].bstrval);
         Result := S_OK;
       end;
     250:
       begin
         DoBeforeNavigate2(IDispatch(dps.rgvarg^[pDispIds^[0]].dispval), POleVariant(dps.rgvarg^[pDispIds^[1]].pvarval)^, POleVariant(dps.rgvarg^[pDispIds^[2]].pvarval)^, POleVariant(dps.rgvarg^[pDispIds^[3]].pvarval)^, POleVariant(dps.rgvarg^[pDispIds^[4]].pvarval)^, POleVariant(dps.rgvarg^[pDispIds^[5]].pvarval)^, dps.rgvarg^[pDispIds^[6]].pbool^);
         Result := S_OK;
       end;
     251:
       begin
         DoNewWindow2(IDispatch(dps.rgvarg^[pDispIds^[0]].pdispval^), dps.rgvarg^[pDispIds^[1]].pbool^);
         Result := S_OK;
       end;
     252:
       begin
         DoNavigateComplete2(IDispatch(dps.rgvarg^[pDispIds^[0]].dispval), POleVariant(dps.rgvarg^[pDispIds^[1]].pvarval)^);
         Result := S_OK;
       end;
     259:
       begin
         DoDocumentComplete(IDispatch(dps.rgvarg^[pDispIds^[0]].dispval), POleVariant(dps.rgvarg^[pDispIds^[1]].pvarval)^);
         Result := S_OK;
       end;
     253:
       begin
         DoOnQuit();
         Result := S_OK;
       end;
     254:
       begin
         DoOnVisible(dps.rgvarg^[pDispIds^[0]].vbool);
         Result := S_OK;
       end;
     255:
       begin
         DoOnToolBar(dps.rgvarg^[pDispIds^[0]].vbool);
         Result := S_OK;
       end;
     256:
       begin
         DoOnMenuBar(dps.rgvarg^[pDispIds^[0]].vbool);
         Result := S_OK;
       end;
     257:
       begin
         DoOnStatusBar(dps.rgvarg^[pDispIds^[0]].vbool);
         Result := S_OK;
       end;
     258:
       begin
         DoOnFullScreen(dps.rgvarg^[pDispIds^[0]].vbool);
         Result := S_OK;
       end;
     260:
       begin
         DoOnTheaterMode(dps.rgvarg^[pDispIds^[0]].vbool);
         Result := S_OK;
       end;
   end;
 finally
   if (bHasParams) then FreeMem(pDispIds, iDispIdsSize);
 end;
end;


function TIEHelper.GetIDsOfNames(const IID: TGUID; Names: Pointer;
 NameCount, LocaleID: Integer; DispIDs: Pointer): HResult;
begin
 Result := E_NOTIMPL;
end;

function TIEHelper.GetTypeInfo(Index, LocaleID: Integer;
 out TypeInfo): HResult;
begin
 Result := E_NOTIMPL;
 pointer(TypeInfo) := nil;
end;

function TIEHelper.GetTypeInfoCount(out Count: Integer): HResult;
begin
 Result := E_NOTIMPL;
 Count := 0;
end;


function TIEHelper.GetSite(const riid: TIID; out site: IUnknown): HResult;
begin
//  Result := S_OK;
 if Assigned(IE) then result:=IE.QueryInterface(riid, site)
  else
    Result:= E_FAIL;
end;

function TIEHelper.SetSite(const pUnkSite: IUnknown): HResult;

 

Tags:

相关文章

    文章评论

    最 近 更 新
    热 点 排 行
    Js与CSS工具
    代码转换工具
    
    <