ccc598914010 2023-04-11 00:22 采纳率: 0%
浏览 81

VB6 程序托盘后不触发QueryUnload事件

模块


Option Explicit
Public Const MAX_TOOLTIP As Integer = 64
Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4
Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
Public Const SW_RESTORE = 9
Public Const SW_HIDE = 0
Public nfIconData As NOTIFYICONDATA
Public Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * MAX_TOOLTIP
End Type
Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

 

 

窗体:

Function WindowStyle()

With nfIconData
.hWnd = Me.hWnd
.uID = Me.Icon
.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
.uCallbackMessage = WM_MOUSEMOVE
.hIcon = Me.Icon.Handle

.szTip = "托盘中" & vbNullChar
.cbSize = Len(nfIconData)
End With
Call Shell_NotifyIcon(NIM_ADD, nfIconData)

Me.Hide
End Function
 

 Private Sub Form_Resize()
If Me.WindowState = 1 Then
WindowStyle
End If
End Sub

Private Sub Form_Load()

 Me.WindowState = 1   

End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
msgbox "程序被强行终止!"
Call Shell_NotifyIcon(NIM_DELETE, nfIconData)

Shell  App.Path + "\" + App.EXEName & ".exe"


End Sub

按理来说程序被任务管理器强制关闭会执行QueryUnload事件,但是只要执行了托盘过程后,程序托盘到右下角在被任务管理器强制关闭则不执行QueryUnload事件,有没有解惑的!

 

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-04-11 01:03
    关注

    被任务管理器强制关闭,如果你说的是结束进程,是不会触发QueryUnload的

    评论

报告相同问题?

问题事件

  • 创建了问题 4月11日