Hola,
Bueno. Mi idea era aprovechar el parámetro URL para ver si de ese modo podías averiguar que el usuario había pulsado en el botón "cerrar" situado en el documento HTML cargado en el "TWebBrowser".
O sea. Tú carga el documento en cuestión en el "navegador". En el evento mencionado anteriormente escribe algo así:
Código Delphi
[-]
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
Caption := URL;
end;
No lo he comprobado, pero, tal vez al utilizar el botón "cerrar" del documento HTML en la variable "URL" tengas algo como "javascript
:window.close()", o "algo", en definitiva, que te permitiera averiguar que se pulsó el botón de marras y pudieras a su vez cerrar el programa, ¿porque de eso se trataba no?
O sea, suponiendo que lo que digo funcione, y te encuentres algo como lo dicho en la variable URL, podrías codificar algo como esto:
Código Delphi
[-]
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
if (URL = 'javascript:window.close()') then
Self.Close;
end;
No sé si es que no te funciona, o no lo has probado, o no me explico bien, o qué... no tengo el componente que dices instalado, aunque sería cuestión de minutos instalarlo, porque lo guardo por aquí. Tal vez, efectivamente, el componente que dices dé más juego que el "TWebBrowser original", pero, tal vez no te haga falta, no sea necesario... no sé.
Edito: ¿No tienes acceso al documento HTML de que estamos hablando, verdad? Es decir, no puedes editarlo según te parezca. ¿O sí? Lo digo porque de ese modo la cosa sería más sencilla, me parece. De todas maneras he hecho algunas pruebas y no parecen dar muy buenos resultados... así, a bote pronto...