Delphiで書かれたブラウザヘルパーオブジェクトで作業していて、BHOがインストールされてIEを閉じると、エラー "runtime error 216 at < address"私は、これが原因で、次のコードで253 disID(onquit)の場合のものであってもよい疑う:BHOを使用しているときにIEでランタイムエラー216が発生しました
function TIEM.Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
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
104:begin
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;
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
Result := S_OK;
end;
else
Result := DISP_E_MEMBERNOTFOUND;
end;
finally
if(bHasParams)then
FreeMem(pDispIDs,iDispIDsSize);
end;
end;
しかし、私はわからないと私はそれについての情報を見つけることができませんでした。私はan example on Hack Chinaから入手したライブラリを使用してBHOを作成しています。project on Google Codeは、を253件で使用しています。私はそれを試みたが、同じランタイムエラー216を取得します。上記のコードに例外ハンドラを追加しようとしましたが、何もキャッチしませんでした。
私が追加:
finalization
exit;
そして今、私は、ランタイムエラーが表示されませんが。私はBHOがそれを必要とするかどうかはわかりませんでした。
私たちに適切なリンクをください。 –
@Worm、評判のない新しいユーザーとして、彼はあなたに適切なリンクを与えることはできません。新しいユーザーには1つのリンクしか許可されません。 –