IDENTIFICAR QUANDO O PC ESTA DESLIGANDO

 Tópico anterior Próximo tópico Novo tópico

IDENTIFICAR QUANDO O PC ESTA DESLIGANDO

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#497006 - 21/05/2021 10:53:12

MICHAELL
PORTO ALEGRE
Cadast. em:Maio/2009


ola bom dia.

teria como ficar monitorando quando o usuario clica pra desligar o pc?
esta acontecendo muito dos usuarios desligarem ou reiniciarem o computador sem fechar o programa.
ai corta conexão com o banco de dados (Access). muitas vezes estão conectados até em rede.




#497008 - 21/05/2021 11:01:48

FABRICIOWEB
BELO HORIZONTE
Cadast. em:Novembro/2011


acess em rede é bom não



Private Sub Form_Load()
Debug.Print 'Started'
'informa que estamos usando um manipulador personalizado, conforme especificado após o operador AddressOf
oldWndProc = SetWindowLong(Me.Hwnd, GWL_WNDPROC, AddressOf MyWndProc)
End Sub

Private Sub Form_Unload(Cancel As Integer)
Debug.Print 'Ended'
' estamos resatorando o gerenciador de mensagens normal
Ret& = SetWindowLong(Me.Hwnd, GWL_WNDPROC, oldWndProc)
End Sub

---------------------------------------
  E aqui está o código module.bas:

' API Declaration

Public Declare Function SetWindowLong Lib 'user32' Alias 'SetWindowLongA' (ByVal Hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib 'user32' Alias 'CallWindowProcA' (ByVal lpPrevWndFunc As Long, ByVal Hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

' Constants declarations

Public Const GWL_WNDPROC = -4
Public Const SC_MONITORPOWER = &HF170&
Public Const WM_SYSCOMMAND = &H112

'Variável para manter o ID do antigo Wnd Proc

Public oldWndProc As Long

'esta função imita um WindowsProc aceitando os mesmos parâmetros para que possamos manipular mensagens do Windows de forma personalizada

Public Function MyWndProc(ByVal Hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'verifique se a mensagem é um comando do sistema e é uma mudança na energia do monitor
'conforme indicado pelo wParam passado para o procedimento

If wMsg = WM_SYSCOMMAND And wParam = SC_MONITORPOWER Then
    Select Case lParam ' check to see what value the procedure has been passed and execute the appropriate code
      
        Case 1
        Debug.Print 'STANDBY'
        Case 2
        Debug.Print 'OFF'
            'your code for when the monitor comes back to life
    End Select
End If

'já que não queremos ignorar a mensagem (queremos que ela seja executada corretamente e todas as outras mensagens enviadas também),
'usamos CallWindowProc passando o identificador do procedimento antigo e os parâmetros
'para que o Windows processe esta mensagem normalmente

MyWndProc = CallWindowProc(oldWndProc, Hwnd, wMsg, wParam, lParam)

End Function



#497010 - 21/05/2021 11:18:56

MICHAELL
PORTO ALEGRE
Cadast. em:Maio/2009


Última edição em 21/05/2021 11:19:20 por MICHAELL

pow.. valeu.. vou testar aqui

Citação:
:
acess em rede é bom não






eu sei...
mas pra access com menos de 50mb é tranquilo 3 ou 4 computadores
agora se o access tiver acima de 150mb, ai só com rede giga ou via terminal service pra funcionar redondinho
mas a maioria dos clientes tem nem 70mb




#497024 - 23/05/2021 12:26:30

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Citação:
MICHAELL e FABRICIOWEB


Vocês são gêmeos?

____________________________________________________________________
Episcopal Studios


 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário