Hola.
Me gustaría crear un programa de escritorio, un programa sencillo en el que cada hora te alerte algo. El problema es que vengo de programación web y no sé por dónde empezar. El programa sería para win 7 y o Vista. Tengo nociones de Java, aunque no me asusta empezar a aprender otro lenguaje.
Cita de: luchi en 18 Febrero 2015, 23:18 PM
Hola.
Me gustaría crear un programa de escritorio, un programa sencillo en el que cada hora te alerte algo. El problema es que vengo de programación web y no sé por dónde empezar. El programa sería para win 7 y o Vista. Tengo nociones de Java, aunque no me asusta empezar a aprender otro lenguaje.
¿Por cada hora te refieres a cada intervalo de 60 minutos, o cada hora del reloj interno del
SO?, ¿y por "alerta", te refieres a mostrar una caja de texto, o ventanas de notificación en la esquina de la pantalla?.
Sea como sea, en cualquier lenguaje te resultará más o menos sencillo de hacer, los lenguajes de programación suelen tener miembros para el manejo de datos como Fechas y Horas, y miembros para medir intervalos de tiempo y/o utilizar temporizadores (en el caso de que quieras eso).
Practicamente no se casi nada de Java, pero puedo mostrárte un ejemplo en Vb.Net (cuya traducción sería practicamente igual en C#, con pequeñas diferencias de sintaxis):
Esto es un ejemplo que espera 60 minutos de forma asíncrona (es decir, detiene la ejecución del hilo secundario durante 60 minutos) y muestra un mensaje de alerta:
Imports System.Threading
Imports System.Threading.Tasks
Public NotInheritable Class TestForm : Inherits Form
''' <summary>
''' Handles the Load event of the TestForm control.
''' </summary>
''' <param name="sender">The source of the event.</param>
''' <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
Private Sub TestForm_Load(ByVal sender As Object, ByVal e As EventArgs) _
Handles MyBase.Load
Me.RunAlertAsync(60 * 1000, "Mensaje de alerta")
End Sub
''' <summary>
''' Waits asynchronouslly the specified time interval then shows an alert.
''' </summary>
''' <param name="interval">The interval, in ms.</param>
''' <param name="alertText">The alert text.</param>
Public Sub RunAlertAsync(ByVal interval As Integer,
ByVal alertText As String)
Task.Factory.StartNew(Sub()
Thread.Sleep(interval)
Me.ShowAlert(alertText)
End Sub)
End Sub
''' <summary>
''' Shows an alert.
''' </summary>
''' <param name="text">The alert text.</param>
Private Sub ShowAlert(ByVal text As String)
MessageBox.Show(text, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Sub
End Class
Y esto es un ejemplo que muestra alertas cada hora en punto del reloj interno del
SO:
Public NotInheritable Class TestForm : Inherits Form
''' <summary>
''' The timer that will notify an alert.
''' </summary>
Protected WithEvents notifyTimer As New Timer With
{
.Interval = 250,
.Enabled = False
}
''' <summary>
''' Gets the alert text.
''' </summary>
''' <value>The alert text.</value>
Private ReadOnly Property AlertText As String
Get
Return "Mensaje de alerta"
End Get
End Property
''' <summary>
''' Initializes a new instance of the <see cref="TestForm"/> class.
''' </summary>
Public Sub New()
Me.InitializeComponent()
Me.InitializeTimer()
End Sub
''' <summary>
''' Initializes the <see cref="notifyTimer"/>.
''' </summary>
Private Sub InitializeTimer()
Me.notifyTimer.Enabled = True ' Inicio el temporizador.
End Sub
''' <summary>
''' Shows an alert.
''' </summary>
''' <param name="value">The value.</param>
Private Sub ShowAlert(ByVal value As String)
MessageBox.Show(value, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Sub
''' <summary>
''' Handles the Tick event of the Timer1 control.
''' </summary>
''' <param name="sender">The source of the event.</param>
''' <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) _
Handles notifyTimer.Tick
' Si el minuto actual es '0', entonces...
If DateTime.Now.Minute = 0 Then
DirectCast(sender, Timer).Stop() ' Detengo el temporizador.
Me.ShowAlert(Me.AlertText) ' Muestro la alerta.
End If
End Sub
End Class
PD: Te los he documentado para que los entiendas mejor.
Saludos.
Me refería a un intervalo cada de 60 minutos. Pues gracias por el código pero ahora ¿cómo lo hago para ejecutarlo en el ordenador?
Cita de: luchi en 19 Febrero 2015, 01:14 AM
Me refería a un intervalo cada de 60 minutos. Pues gracias por el código pero ahora ¿cómo lo hago para ejecutarlo en el ordenador?
Necesitas compilar el código fuente para construir el archivo binario ejecutable, claro está, jeje.
Puedes descargar la versión
Express de
Microsoft VisualStudio aquí:
- http://go.microsoft.com/?linkid=9832256
O puedes descargar mi instalador personalizado de la versión Ultimate, orientada a VB.Net, con un sin fin de addons para empezar a desarrollar con todo lo necesario y más, aquí:
- Microsoft Visual Studio 2013 Ultimate + Resource Pack (Actualizado 09-Oct-2014) (http://foro.elhacker.net/series_peliculas_musica_juegos_programas/microsoft_visual_studio_2013_ultimate_resource_pack_actualizado_09oct2014-t422732.0.html)
Una vez hayas instalado VisualStudio, creas un nuevo proyecto de tipo
WindowsForms bajo el lenguaje VB.Net, pegas el código fuente que mostré ( corrijes el nombre de la Class '
TestForm' por '
Form1' ) y entonces ya puedes empezar a adaptar el código a tus necesidades y formular las consiguientes dudas que tengas al respecto, en el subforo de la sección dedicada a la programación .Net :).
Saludos
Muchas gracias. Ya me queda más claro ;D