Delphi處理TWebBrowser的Close事件

一劍平江湖發表於2013-12-10

當TWebBrowser控制元件訪問的 Web 頁上的指令碼呼叫window.close方法時,TWebBrowser控制元件可能會在窗體中消失。我們的程式應該對此作出反應,否則再次訪問TWebBrowser控制元件將引發異常。當TWebBrowser控制元件銷燬前會向其父視窗(即我們的程式窗體)傳送WM_PARENTNOTIFY訊息,訊息的wParam引數的低字部分為:WM_DESTROYlParam引數為TWebBrowser控制元件的視窗控制程式碼。我們可以響應該訊息處理TWebBrowser的Close事件,程式碼如下:

在窗體的定義新增申明:

procedure WBClose(var Msg:TMessage);message WM_PARENTNOTIFY;

在實現部分新增具體程式碼:

procedure TForm1.WBClose(var Msg: TMessage);
begin
    if
 Msg.WParamLo = WM_DESTROY then //物件被銷燬訊息
        if UInt(Msg.LParam) = WebBrowser1.Handle then //WebBrowser1被銷燬
            Close; //關閉窗體本身
end;

相關文章