Cómo crear un evento de temporizador utilizar las funciones de API de Windows

Seleccione idioma Seleccione idioma
Id. de artículo: 180736 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se muestra cómo crear un evento de temporizador mediante las funciones SetTimer y KillTimer API de Windows. El artículo también incluye un proyecto de ejemplo que muestra cómo utilizar estas funciones.

Puede utilizar estas funciones si necesita ejecutar eventos a intervalos mayores de lo que permite el control Timer de Visual Basic. El control Timer permite ligeramente un intervalo máximo de a través de un minuto mientras estas funciones de API permiten configurar un intervalo para 24.86 días.

Más información



La función SetTimer crea un temporizador que se ejecuta una función en el valor de tiempo de espera especificado. Esta función requiere los siguientes parámetros:
  • hWnd identifica la ventana para asociarse con el temporizador. Esta ventana es propiedad el subproceso de llamada. Si este parámetro es NULL, no hay ninguna ventana está asociada con el temporizador y se omite el parámetro nIDEvent.
  • nIDEvent especifica un identificador de temporizador distinto de cero. Si el parámetro hWnd es NULL, se omite este parámetro.
  • uElapse especifica el valor de tiempo de espera, en milisegundos. Puede utilizar un tipo de datos Long con un valor de hasta 2.147.483.647 milisegundos. Desbordamiento de los valores más allá de este resultado de límite de un error en tiempo de ejecución '6'.

    Nota: Visual Basic agrega un signo de libra (#) al final del valor de hora si el valor supera este límite.
  • lpTimerFunc señala a la función que se le notifique cuando el valor de tiempo de espera transcurre. Utilice el operador AddressOf para devolver un puntero a la función. La función de devolución de llamada recibe el valor hWnd, el NIDEvent, la UElapse y lpTimerFunc parámetros de la función AddressOf.
Si la función SetTimer es correcta, la función devuelve un entero que identifica el temporizador nuevo. La función KillTimer requiere este entero destruir el temporizador. Si la función SetTimer falla, la función devuelve cero.

Después de crear un temporizador, usted deberá destruir el temporizador utilizando la función KillTimer. La función KillTimer requiere los siguientes parámetros:
  • hWnd identifica la ventana asociada con el temporizador especificado. Este valor debe ser el mismo que el valor hWnd pasado a la función SetTimer que creó el temporizador.
  • uIDEvent especifica el temporizador de destruirse. Si el identificador de ventana pasado a SetTimer es válido, este parámetro debe ser igual al valor de uIDEvent pasado a SetTimer. Si la aplicación llama a SetTimer con hWnd establecido en NULL, este parámetro debe ser el identificador de temporizador devuelto por SetTimer.
La función de KillTimer devuelve un valor que no sea cero si la función destruye correctamente el temporizador.

La sección siguiente muestra cómo crear un proyecto de ejemplo que muestra cómo utilizar estas funciones en Visual Basic.

Para crear el proyecto de ejemplo

  1. Inicie un nuevo proyecto EXE estándar en Visual Basic. Se creará Form1 de manera predeterminada.
  2. Agregue un TextBox y un CommandButton a Form1.
  3. Agregue un módulo al proyecto completando los pasos siguientes:
    1. En el menú proyecto, haga clic en Agregar módulo. Aparecerá el cuadro de diálogo Agregar módulo.
    2. En la ficha nueva, elija módulo y haga clic en Aceptar. Un módulo nuevo se agrega al proyecto.
  4. Copie el código siguiente a la ventana de código de Module1:
      
         Option Explicit
    
          Declare Function SetTimer Lib "user32" _
                (ByVal hwnd As Long, _
                ByVal nIDEvent As Long, _
                ByVal uElapse As Long, _
                ByVal lpTimerFunc As Long) As Long
    
          Declare Function KillTimer Lib "user32" _
                (ByVal hwnd As Long, _
                ByVal nIDEvent As Long) As Long
    
          Global iCounter As Integer
    
          Sub TimerProc(ByVal hwnd As Long, _
                         ByVal uMsg As Long, _
                         ByVal idEvent As Long, _
                         ByVal dwTime As Long)
    
              iCounter = iCounter + 1
              Form1.Text1.Text = CStr(iCounter)
          End Sub
    
    					
  5. Copie el código siguiente a la ventana código de Form1:
          Option Explicit
          Dim lngTimerID As Long
          Dim BlnTimer As Boolean
    
          Private Sub Form_Load()
             BlnTimer = False
             Command1.Caption = "Start Timer"
          End Sub
    
          Private Sub Command1_Click()
          'Starts and stops the timer.
    
             If BlnTimer = False Then
                lngTimerID = SetTimer(0, 0, 200, AddressOf TimerProc)
                If lngTimerID = 0 Then
                  MsgBox "Timer not created. Ending Program"
                  Exit Sub
                End If
                BlnTimer = True
                Command1.Caption = "Stop Timer"
             Else
                lngTimerID = KillTimer(0, lngTimerID)
                If lngTimerID = 0 Then
                   MsgBox "couldn't kill the timer"
                End If
                BlnTimer = False
                Command1.Caption = "Start Timer"
              End If
    
          End Sub
    
    					
  6. En el menú <B>Ejecutar</B>, haga clic en <B>Inicio</B> o presione la tecla F5 para iniciar el programa. Haga clic en Iniciar cronómetro para crear un evento de temporizador. En cada intervalo especificado, se actualiza el cuadro de texto con un nuevo valor. Haga clic en Detener cronómetro para detener el evento de temporizador.

Referencias

Para obtener información adicional sobre las funciones SetTimer y KillTimer, consulte la documentación de producto de Platform SDK.

Para obtener información adicional sobre el operador AddressOf, consulte la Ayuda de Visual Basic.

Manual del programador de Visual Basic, versión 5.0; "Mediante el Control Timer"

Propiedades

Id. de artículo: 180736 - Última revisión: martes, 29 de junio de 2004 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Edición de aprendizaje
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palabras clave: 
kbmt kbapi kbcontrol kbhowto KB180736 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 180736

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com