vb.net WPF webbrowser window.close 關閉後不觸發 WindowClosing 事件 WNDPROC解決方案,wpfwndproc

來源:互聯網
上載者:User

vb.net WPF webbrowser window.close 關閉後不觸發 WindowClosing 事件 WNDPROC解決方案,wpfwndproc


vb.net WPF webbrowser window.close 關閉後不觸發 WindowClosing 事件 WNDPROC解決方案


#Region "WPF 當瀏覽器視窗關閉時觸發 Quit事件 "#If OnSourceInitialized Then    Protected Overrides Sub OnSourceInitialized(e As EventArgs) 'onload 等控制代碼建立後引用WSInitialized(Me, e)        WSInitialized(Me, e)        MyBase.OnSourceInitialized(e)    End Sub#Else    Private Sub LyWebTabItem_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded        WSInitialized(sender, e)    End Sub#End If    Sub WSInitialized(sender As Object, e As EventArgs)        Dim hs As HwndSource = PresentationSource.FromVisual(Me) '=HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);          hs.AddHook(New HwndSourceHook(AddressOf WndProc))    End Sub    ''' <summary>      ''' Overridden      ''' </summary>      ''' <param name="m">The <see cref="Message"/> send to this procedure</param>      <PermissionSet(SecurityAction.LinkDemand, Name:="FullTrust")> _    Protected Overloads Function WndProc(hwnd As IntPtr, msg As Int32, wParam As IntPtr, lParam As IntPtr, ByRef handled As Boolean) As IntPtr  '(ByRef m As Forms.Message)        'Protected Overloads sub WndProc((ByRef m As Forms.Message)) 'winform方式        'If m.Msg = DirectCast(WindowsMessages.WM_PARENTNOTIFY, Integer) Then        If msg = DirectCast(WindowsMessages.WM_PARENTNOTIFY, Integer) Then            'int lp = m.LParam.ToInt32();              'Dim wp As Integer = m.WParam.ToInt32()            Dim wp As Integer = wParam.ToInt32()            Dim X As Integer = wp And &HFFFF            'int Y = (wp >> 16) & 0xFFFF;              If X = DirectCast(WindowsMessages.WM_DESTROY, Integer) Then                Me.OnQuit()            End If        End If        Return IntPtr.Zero        'MyBase.WndProc(m)    End Function    ''' <summary>      ''' A list of all the available window messages      ''' </summary>      Enum WindowsMessages        WM_ACTIVATE = &H6        WM_ACTIVATEAPP = &H1C        WM_AFXFIRST = &H360        WM_AFXLAST = &H37F        WM_APP = &H8000        WM_ASKCBFORMATNAME = &H30C        WM_CANCELJOURNAL = &H4B        WM_CANCELMODE = &H1F        WM_CAPTURECHANGED = &H215        WM_CHANGECBCHAIN = &H30D        WM_CHAR = &H102        WM_CHARTOITEM = &H2F        WM_CHILDACTIVATE = &H22        WM_CLEAR = &H303        WM_CLOSE = &H10        WM_COMMAND = &H111        WM_COMPACTING = &H41        WM_COMPAREITEM = &H39        WM_CONTEXTMENU = &H7B        WM_COPY = &H301        WM_COPYDATA = &H4A        WM_CREATE = &H1        WM_CTLCOLORBTN = &H135        WM_CTLCOLORDLG = &H136        WM_CTLCOLOREDIT = &H133        WM_CTLCOLORLISTBOX = &H134        WM_CTLCOLORMSGBOX = &H132        WM_CTLCOLORSCROLLBAR = &H137        WM_CTLCOLORSTATIC = &H138        WM_CUT = &H300        WM_DEADCHAR = &H103        WM_DELETEITEM = &H2D        WM_DESTROY = &H2        WM_DESTROYCLIPBOARD = &H307        WM_DEVICECHANGE = &H219        WM_DEVMODECHANGE = &H1B        WM_DISPLAYCHANGE = &H7E        WM_DRAWCLIPBOARD = &H308        WM_DRAWITEM = &H2B        WM_DROPFILES = &H233        WM_ENABLE = &HA        WM_ENDSESSION = &H16        WM_ENTERIDLE = &H121        WM_ENTERMENULOOP = &H211        WM_ENTERSIZEMOVE = &H231        WM_ERASEBKGND = &H14        WM_EXITMENULOOP = &H212        WM_EXITSIZEMOVE = &H232        WM_FONTCHANGE = &H1D        WM_GETDLGCODE = &H87        WM_GETFONT = &H31        WM_GETHOTKEY = &H33        WM_GETICON = &H7F        WM_GETMINMAXINFO = &H24        WM_GETOBJECT = &H3D        WM_GETTEXT = &HD        WM_GETTEXTLENGTH = &HE        WM_HANDHELDFIRST = &H358        WM_HANDHELDLAST = &H35F        WM_HELP = &H53        WM_HOTKEY = &H312        WM_HSCROLL = &H114        WM_HSCROLLCLIPBOARD = &H30E        WM_ICONERASEBKGND = &H27        WM_IME_CHAR = &H286        WM_IME_COMPOSITION = &H10F        WM_IME_COMPOSITIONFULL = &H284        WM_IME_CONTROL = &H283        WM_IME_ENDCOMPOSITION = &H10E        WM_IME_KEYDOWN = &H290        WM_IME_KEYLAST = &H10F        WM_IME_KEYUP = &H291        WM_IME_NOTIFY = &H282        WM_IME_REQUEST = &H288        WM_IME_SELECT = &H285        WM_IME_SETCONTEXT = &H281        WM_IME_STARTCOMPOSITION = &H10D        WM_INITDIALOG = &H110        WM_INITMENU = &H116        WM_INITMENUPOPUP = &H117        WM_INPUTLANGCHANGE = &H51        WM_INPUTLANGCHANGEREQUEST = &H50        WM_KEYDOWN = &H100        WM_KEYFIRST = &H100        WM_KEYLAST = &H108        WM_KEYUP = &H101        WM_KILLFOCUS = &H8        WM_LBUTTONDBLCLK = &H203        WM_LBUTTONDOWN = &H201        WM_LBUTTONUP = &H202        WM_MBUTTONDBLCLK = &H209        WM_MBUTTONDOWN = &H207        WM_MBUTTONUP = &H208        WM_MDIACTIVATE = &H222        WM_MDICASCADE = &H227        WM_MDICREATE = &H220        WM_MDIDESTROY = &H221        WM_MDIGETACTIVE = &H229        WM_MDIICONARRANGE = &H228        WM_MDIMAXIMIZE = &H225        WM_MDINEXT = &H224        WM_MDIREFRESHMENU = &H234        WM_MDIRESTORE = &H223        WM_MDISETMENU = &H230        WM_MDITILE = &H226        WM_MEASUREITEM = &H2C        WM_MENUCHAR = &H120        WM_MENUCOMMAND = &H126        WM_MENUDRAG = &H123        WM_MENUGETOBJECT = &H124        WM_MENURBUTTONUP = &H122        WM_MENUSELECT = &H11F        WM_MOUSEACTIVATE = &H21        WM_MOUSEFIRST = &H200        WM_MOUSEHOVER = &H2A1        WM_MOUSELAST = &H20A        WM_MOUSELEAVE = &H2A3        WM_MOUSEMOVE = &H200        WM_MOUSEWHEEL = &H20A        WM_MOVE = &H3        WM_MOVING = &H216        WM_NCACTIVATE = &H86        WM_NCCALCSIZE = &H83        WM_NCCREATE = &H81        WM_NCDESTROY = &H82        WM_NCHITTEST = &H84        WM_NCLBUTTONDBLCLK = &HA3        WM_NCLBUTTONDOWN = &HA1        WM_NCLBUTTONUP = &HA2        WM_NCMBUTTONDBLCLK = &HA9        WM_NCMBUTTONDOWN = &HA7        WM_NCMBUTTONUP = &HA8        WM_NCMOUSEHOVER = &H2A0        WM_NCMOUSELEAVE = &H2A2        WM_NCMOUSEMOVE = &HA0        WM_NCPAINT = &H85        WM_NCRBUTTONDBLCLK = &HA6        WM_NCRBUTTONDOWN = &HA4        WM_NCRBUTTONUP = &HA5        WM_NEXTDLGCTL = &H28        WM_NEXTMENU = &H213        WM_NOTIFY = &H4E        WM_NOTIFYFORMAT = &H55        WM_NULL = &H0        WM_PAINT = &HF        WM_PAINTCLIPBOARD = &H309        WM_PAINTICON = &H26        WM_PALETTECHANGED = &H311        WM_PALETTEISCHANGING = &H310        WM_PARENTNOTIFY = &H210        WM_PASTE = &H302        WM_PENWINFIRST = &H380        WM_PENWINLAST = &H38F        WM_POWER = &H48        WM_PRINT = &H317        WM_PRINTCLIENT = &H318        WM_QUERYDRAGICON = &H37        WM_QUERYENDSESSION = &H11        WM_QUERYNEWPALETTE = &H30F        WM_QUERYOPEN = &H13        WM_QUEUESYNC = &H23        WM_QUIT = &H12        WM_RBUTTONDBLCLK = &H206        WM_RBUTTONDOWN = &H204        WM_RBUTTONUP = &H205        WM_RENDERALLFORMATS = &H306        WM_RENDERFORMAT = &H305        WM_SETCURSOR = &H20        WM_SETFOCUS = &H7        WM_SETFONT = &H30        WM_SETHOTKEY = &H32        WM_SETICON = &H80        WM_SETREDRAW = &HB        WM_SETTEXT = &HC        WM_SETTINGCHANGE = &H1A        WM_SHOWWINDOW = &H18        WM_SIZE = &H5        WM_SIZECLIPBOARD = &H30B        WM_SIZING = &H214        WM_SPOOLERSTATUS = &H2A        WM_STYLECHANGED = &H7D        WM_STYLECHANGING = &H7C        WM_SYNCPAINT = &H88        WM_SYSCHAR = &H106        WM_SYSCOLORCHANGE = &H15        WM_SYSCOMMAND = &H112        WM_SYSDEADCHAR = &H107        WM_SYSKEYDOWN = &H104        WM_SYSKEYUP = &H105        WM_TCARD = &H52        WM_TIMECHANGE = &H1E        WM_TIMER = &H113        WM_UNDO = &H304        WM_UNINITMENUPOPUP = &H125        WM_USER = &H400        WM_USERCHANGED = &H54        WM_VKEYTOITEM = &H2E        WM_VSCROLL = &H115        WM_VSCROLLCLIPBOARD = &H30A        WM_WINDOWPOSCHANGED = &H47        WM_WINDOWPOSCHANGING = &H46        WM_WININICHANGE = &H1A    End Enum    ''' <summary>      ''' Raises the <see cref="Quit"/> event      ''' </summary>      Protected Sub OnQuit()#If OnSourceInitialized Then        CommandBinding_Close_Executed(Me, Nothing)#Else        MenuCloseTab_Click(Me, Nothing)#End If        RaiseEvent Quit(Me, EventArgs.Empty)    End Sub    ''' <summary>      ''' Raised when the browser application quits      ''' </summary>      ''' <remarks>      ''' Do not confuse this with DWebBrowserEvents2.Quit... That's something else.      ''' </remarks>      Public Event Quit As EventHandler#End Region

原內容是C#代碼WINFORM 搜尋下就有,暫略


VB,在form1裡面放了一個WebBrowser1,當裡面的頁面執行了javascript:windowclose()後,怎做可以關閉Form1

嘗試使用訊息。
使用SendMessage

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

hwnd 為需要關閉的視窗程序的視窗控制代碼;

發送的訊息可以用兩種選擇1,wMsg為WM_CLOSE,wParam,lParam為0;2,wMsg為WM_SYSCOMMAND,wParam為CS_CLOSE,lParam為0。
 
java在windowclosing事件中怎不關閉視窗

out.println("<script>");
out.println("alert('設定成功!');");
out.println( "window.opener=null;");
out.println( "window.close();");
out.println("</script>");
如果在Iframe中使用,可以這樣:<input type=button value=關閉視窗 name=wcls onclick='window.parent.opener=null;window.parent.close()'>
我試過,正常。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.