gpt4 book ai didi

windows - 使用 BHO 时 IE 上的运行时错误 216

转载 作者:可可西里 更新时间:2023-11-01 09:56:42 30 4
gpt4 key购买 nike

我正在处理用 Delphi 编写的浏览器帮助程序对象,当安装 BHO 并关闭 IE 时,我收到错误“运行时错误 216 在 < 地址 >”。我怀疑这可能是因为以下代码中的 253 disID (onquit) 情况:

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 情况下使用 IConnectionPoint.Unadvise(Integer)。我试过了,但仍然遇到相同的运行时错误 216。我也尝试过在上面的代码中添加一个异常处理程序,但它没有捕获到任何东西。

我补充说:

finalization
exit;

现在我没有看到运行时错误。我不知道 BHO 会需要它。

最佳答案

退出应用时出现 216 错误意味着您在项目的最终代码中触发了访问冲突sysutils 单元已经完成。

因此,请检查所有终结部分是否使用了无效指针。在您的搜索中包括您在项目中使用的所有组件的完成部分。

要调试终结部分,您可以在 dpr 中的“end”语句上放置一个断点,当调试器在此中断时,使用 F7 进入终结代码,然后使用 F7 和 F8 单步执行所有终结代码部分。这将是一个乏味的过程,但它会让您找到导致访问冲突的确切语句。

关于windows - 使用 BHO 时 IE 上的运行时错误 216,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4702658/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com