visual studio puede problemas operacion instalar instalacion esta error ejecutar descargar curso completa aplicaciones winapi vb6

winapi - studio - visual basic 6 windows 10



La aplicaciĆ³n de la bandeja del sistema VB 6.0 no se cierra con gracia cuando Windows se apaga (2)

Estoy usando el siguiente código dentro de una aplicación VB 6.0 para permitirle a la aplicación un ícono de bandeja del sistema:

Option Explicit ''user defined type required by Shell_NotifyIcon API call Public Type NOTIFYICONDATA cbSize As Long hwnd As Long uId As Long uFlags As Long uCallBackMessage As Long hIcon As Long szTip As String * 64 End Type ''constants required by Shell_NotifyIcon API call: Public Const NIM_ADD = &H0 Public Const NIM_MODIFY = &H1 Public Const NIM_DELETE = &H2 Public Const NIF_MESSAGE = &H1 Public Const NIF_ICON = &H2 Public Const NIF_TIP = &H4 Public Const WM_MOUSEMOVE = &H200 Public Const WM_LBUTTONDOWN = &H201 ''Button down Public Const WM_LBUTTONUP = &H202 ''Button up Public Const WM_LBUTTONDBLCLK = &H203 ''Double-click Public Const WM_RBUTTONDOWN = &H204 ''Button down Public Const WM_RBUTTONUP = &H205 ''Button up Public Const WM_RBUTTONDBLCLK = &H206 ''Double-click Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Public nid As NOTIFYICONDATA

Quiero que la aplicación se minimice en la bandeja del sistema al hacer clic en la X de la ventana para cerrarla. Lo logro con el siguiente código en el evento QueryUnload del formulario:

Me.WindowState = vbMinimized Me.Hide

En el evento Unload del formulario, hago lo siguiente:

Shell_NotifyIcon NIM_DELETE, nid

El PROBLEMA es que cuando apago el sistema operativo y Windows envía el mensaje WM_CLOSE a la aplicación, QueryUnload se activa pero aparentemente no es el evento de descarga, ya que Windows me indica que quiere finalizar mi tarea.

¿Alguna idea sobre cómo hacer que la aplicación se cierre con gracia en el cierre de Windows?

Gracias


Esto es lo que uso cuando cierro mis programas para Query_Unload:

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Select Case UnloadMode Case 1, 2, 3 ''If the program is being terminated by Code, Windows shutting down, or Task Manager Cancel = False ''Allow the program termination Unload Me Case Else Cancel = True ''Else disallow the termination End Select End Sub

Si el caso 2 (Windows Shutting Down), sigo adelante y dejo que el programa finalice.

¡Déjeme saber si esto ayuda! JFV