Cry about...
Delphi Troubleshooting
Project PPPP raised exception class EOleException with
message 'Access is denied'
Symptom:
When running a project that uses the TWebBrowser component, which tries
to extract information about a frame, the following error is generated:
Project PPPP raised exception class EOleException with message
'Access is denied'. Process topped. use Step or Run to continue.
where: 'PPPP' is the name of the Delphi project.
Cause:
This error is caused by the security model that Microsoft built into
the TWebBrowser component. The exception will be thrown if the frame shows
a page from a different domain than the frameset.
Remedy:
There is no single remedy, but consider each of the following:
- Try catching the error. For example:
for index := browserDocument.frames.length-1 downto 0 do
begin
oleIndex := index;
frameDsp := browserDocument.frames.item(oleIndex);
if Assigned(frameDsp) then
begin
frameWin := frameDsp as IHTMLWindow2;
if Assigned(frameWin) then
begin
try
frameDoc := frameWin.Document;
except on EOleException do
frameDoc := nil;
end;
.
.
be aware that whilst this will allow you to define logic for handling
the error in code, it will not stop Delphi from breaking execution of
the application.
- To stop Delphi from breaking, you will need to configure Delphi
to ignore the exception by telling it that the application will handle
the exception. Go to Tools > Debugger Options, on the "Language Exceptions"
tab add "
EOleException". Ensure that it is ticked, which
tells the Delphi environment to ignore the exception (and let the code
run).
It would be nice to be able to specify this at a module or unit
level rather than globally, but I have yet to find a way of achieving
this.
These notes are believed to be correct for Delphi 6 but
may apply to other versions as well.
|