canal visual basic .net

Recursos Visual Basic.NET, VB.NET, Manuales de programación, Tutoriales, Foros de programación, Comunidad de programadores

Usuarios activos:  55

Foros de programación, recursos, tutoriales, sistemas operativos...

Bienvenido a la zona de foros. Participa en alguno de nuestros foros: Foros de visual basic, foros de visual basic.net foros de Crystal reports, programas gratis, foros de C++ - C# , foros de Java, foros de PHP, foros de ASP.net. Seguro que hay un foro que te servirá de gran utilidad y si no lo encuentras avísanos y crearemos uno nuevo.
Resultados 1 al 8 de 8
  1. #1
    jfcharly2 está desconectado Member Iniciad@
    Fecha de ingreso
    30 ene, 06
    Mensajes
    47

    Predeterminado

    Buenas a todos

    Lo que quiero hacer el cerrar el programa si el usuario no lo utilizó durante un tiempo.

    Encontre en la web una forma bastante sencilla, si es que tu programa tiene pocos formularios y controles (ya que hay que ingresar el código en cada evento _MouseMove)

    Queria saber si alguien sabía de alguna otra forma de lograrlo, usando APIs capaz

    Desde ya muchas gracias

    saludos!




  2. #2
    Avatar de seba123neo
    seba123neo está desconectado Moderador Guru
    Fecha de ingreso
    19 oct, 06
    Ubicación
    Argentina
    Mensajes
    2,766

    Predeterminado


    Hola, con la api llamada GetQueueStatus podes decirle que mensajes interceptar y asi decidir si se cierra o no la aplicación...un ejemplo que se cierra despues de 5 segundos de inactividad..

    Código:
    Option Explicit
    
    Private Declare Function GetQueueStatus Lib "user32" (ByVal fuFlags As Long) As Long
    
    Private Const QS_KEY = &H1
    Private Const QS_MOUSEMOVE = &H2
    Private Const QS_MOUSEBUTTON = &H4
    Private Const QS_MOUSE = (QS_MOUSEMOVE Or QS_MOUSEBUTTON)
    Private Const QS_INPUT = (QS_MOUSE Or QS_KEY)
    
    Public bCancel As Boolean
    
    Public Sub Inactividad(ByVal TimeOut_InSec As Long)
     Dim t As Long
     t = Timer
     Do While bCancel = False
     If GetQueueStatus(QS_INPUT) Then
     t = Timer
     DoEvents
     End If
     If Timer - t >= TimeOut_InSec Then Exit Do
     Loop
     If bCancel = False Then MsgBox "La Aplicacion se cerro despues de " & Timer - t & " segundos inactiva": Unload Me
    End Sub
    
    Private Sub Form_Load()
     Me.Show
     Call Inactividad(5)
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
     bCancel = True
    End Sub
    saludos.
    Todos somos ignorantes;lo que pasa es que no todos ignoramos las mismas cosas - Albert Einstein

  3. #3
    Alain está desconectado Junior Member Iniciad@
    Fecha de ingreso
    01 nov, 08
    Mensajes
    14

    Predeterminado

    Hola, con apis se necesita mas codigo, yo recomiendo (si quieres que se cierre dentro de un minuto):

    Insertar un Timer y ponerle en interval el numero de milisegundos, no mayor a un minuto, ponerle en el codigo:

    Private sub timer1_timer()
    Unload me
    end
    end sub





  4. #4
    Avatar de seba123neo
    seba123neo está desconectado Moderador Guru
    Fecha de ingreso
    19 oct, 06
    Ubicación
    Argentina
    Mensajes
    2,766

    Predeterminado

    pues si, siempre con api's lleva mas codigo , pero es la mejor forma y no consume recursos como un Timer...siempre la mejor forma lleva mas codigo con api's...
    Todos somos ignorantes;lo que pasa es que no todos ignoramos las mismas cosas - Albert Einstein

  5. #5
    Avatar de joshgabry
    joshgabry está desconectado Member Iniciad@
    Fecha de ingreso
    12 nov, 10
    Ubicación
    Costa Rica
    Mensajes
    39

    Predeterminado Cerrar programa luego de cierto tiempo inactivo

    Saludos; disculpa mi ignorancia pero para realizar esto se debe de tener de igual manera un timer para que este esté comprobando si está inactiva o no....!

  6. #6
    Avatar de joshgabry
    joshgabry está desconectado Member Iniciad@
    Fecha de ingreso
    12 nov, 10
    Ubicación
    Costa Rica
    Mensajes
    39

    Lightbulb Solucionado

    Tenías razón Sebas... Así lo solucioné después de un buen rato....

    Aquí les dejo esta solución para obtener la INACTIVIDAD del Mouse en Windows

    Imports System.Windows
    Imports System.Runtime.InteropServices

    Module Modulo

    <DllImport("user32.dll")> _
    Public Function GetCursorPos(ByRef lpPoint As POINTAPI) As Boolean
    End Function

    Private Posicion As POINTAPI
    Public Structure POINTAPI
    Public X As Integer
    Public Y As Integer
    End Structure

    ''' <summary>
    ''' Reloj Interno de la Aplicación
    ''' </summary>
    Public RelojSesion As New Forms.Timer

    ''' <summary>
    ''' Inicia Reloj de Aplicación
    ''' </summary>
    ''' <param name="tiempo">En Minutos</param>
    ''' <remarks></remarks>
    Public Sub IniciarReloj(Optional ByVal tiempo As Integer = 5)
    RelojSesion = New Forms.Timer()
    RelojSesion.Interval = tiempo * 60000

    AddHandler RelojSesion.Tick, AddressOf RelojSesion_Tick

    If GetCursorPos(Posicion) Then
    PosicionX = Posicion.X
    PosicionY = Posicion.Y
    RelojSesion.Start() 'Enable = True
    End If

    End Sub

    ''' <summary>
    ''' Corre Internamente, según el Intervaluo dado al iniciarlo
    ''' </summary>
    Private Sub RelojSesion_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
    If GetCursorPos(Posicion) Then
    'Varifica Coordenada Actual con la Nueva Obtenida
    If PosicionX <> Posicion.X Or PosicionY <> Posicion.Y Then
    PosicionX = Posicion.X
    PosicionY = Posicion.Y

    'Si las Coordenadas son Iguiales a las Anteriores, Significa que NO hubo actividad en el tiempo dado
    ElseIf PosicionX = Posicion.X And PosicionY = Posicion.Y Then
    RelojSesion.Stop() 'Enable = False
    'Cerrar Sesión, Aplicación, lo que quieras hacer!
    End If
    End If
    End Sub

    End Module

  7. #7
    Avatar de Count_
    Count_ está desconectado Junior Member Iniciad@
    Fecha de ingreso
    19 ene, 12
    Ubicación
    España
    Mensajes
    8

    Predeterminado Timer

    Pones un timer en segundos enlazado a un label que no se vea
    Pones:
    Timer1.Start
    Label1.text = "X"
    If label1.text = "0" then
    me.close()
    End If
    Label1.text = "X"

    X es el texto que hayas puesto en el label, que es el tiempo que quieres que pase antes de cerrarse

    Y por ultimo pones en el timer:
    Timer.interval = 100
    Label.text -= "1"

    Espero que te haya servido
    ¿?

  8. #8
    Avatar de Count_
    Count_ está desconectado Junior Member Iniciad@
    Fecha de ingreso
    19 ene, 12
    Ubicación
    España
    Mensajes
    8

    Predeterminado perdon

    Con enlazar me referia al code que e puesto en el timer
    ¿?

Temas similares

  1. Cerrar aplicación modular desde mi programa
    Por Moss en el foro Visual Basic 6.0
    Respuestas: 2
    Último mensaje: 17/07/2009, 02:57
  2. Error al ejecutar luego de compilar
    Por k-tanga en el foro Visual Basic 6.0
    Respuestas: 0
    Último mensaje: 28/05/2008, 14:55
  3. Cerrar programa
    Por ad_iesus en el foro Visual Basic 6.0
    Respuestas: 3
    Último mensaje: 20/05/2007, 14:29
  4. Cerrar cualquier programa
    Por Guests en el foro Visual Basic 6.0
    Respuestas: 2
    Último mensaje: 31/08/2006, 02:22
  5. Error al cerrar. El programa no termina
    Por Guests en el foro Visual Basic 6.0
    Respuestas: 1
    Último mensaje: 18/06/2006, 20:34

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Visual Studio .VisualBasic.net .ADO.NET .ASP.NET .Framework .Crystal report
[Visual Basic .NET · Información legal · Condiciones de uso · Publicidad · Contacto · RSS novedades Foro · Inicio]
Un sitio web de Internelia (Ontecnia) © Copyright 2013 canalvisualbasic.net. Todos los derechos reservados