Lancement timer

Résolu
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 - 15 févr. 2008 à 13:27
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 - 18 févr. 2008 à 07:50
bonjour,

je cherche a realiser 1 programme qui envoit une MsgBox(1) toutes les secondes.

voici le prg que j'ai realiser a cet effet (mais qui ne fonctionne pas) :

Module ProcGles
    Sub Main()
        Dim LancerVeille As New Veilleuse()
    End Sub
End Module


Public Class Veilleuse
    Private WithEvents cpte As New Timer
    Public Sub New()
        cpte.Interval = 1000
        cpte.Start()
    End Sub
    Private Sub cpte_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles cpte.Tick
        MsgBox(1)
    End Sub
End Class

via le debugger je peux constater que le prg passe bien dans le constructeur de la classe Veilleuse mais la procedure evenementielle cpte_Tick() n'est jamais declenchee.

pourriez-vous me dire comment corriger mon code pour que ca fonctionne ?

merci a vous,

alonsyl

10 réponses

cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
15 févr. 2008 à 17:07
D'après ce que j'en ai compris (mais c'est pas sur)

le sub main en vb quand tu l'execute il effectuer les différentes actions que tu lui demande et après il se ferme, donc il faudrait faire une boucle pour pouvoir le garder actif tous le temps un peu comme un batch.

bonne prog

@+
LIM
3
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
15 févr. 2008 à 18:06
Pour le systray il faut que tu regarde notifyicon (je ne sais plus du tout comment çà marche)
j'essayerai de refaire un prog avec ce week-end pour retrouver comment çà marche

pour le démarrer le programme au lancement de windows il faut créer une clé de registre
pour cela j'avais une coche dans un coin du programme qui créer ou supprimer la clé de regsitre

Private

Sub ckAutoStart_CheckedChanged(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles ckAutoStart.CheckedChanged

Try

If ckAutoStart.Checked =
True
ThenRunOnStart(

"NOM DE TA CLE", Application.StartupPath &
"\Tonexe.exe")

ElseDelRunOnStart(

"NOM DE TA CLE")

End
If

Catch ex
As ExceptionMessageBox.Show(

"Error !",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

End
Try

End
Sub

'Création d'une clé de regsitre
Public

Sub RunOnStart(
ByVal Name
As
String,
ByVal File
As
String)

Try

Dim Key
As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
True)Key.SetValue(Name, File)

Key.Close()

Key =

Nothing

Catch ex
As ExceptionMessageBox.Show(

"Error !",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

 

End
Try

End
Sub

Public
Sub DelRunOnStart(
ByVal Name
As
String)

Try

Dim Key
As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
True)Key.DeleteValue(

Name)Key.Close()

Key =

Nothing

Catch ex
As ExceptionMessageBox.Show(

"Error !",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

 

End
Try

End
Sub

      

@+
LIM
3
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
18 févr. 2008 à 07:50
Salut

   Pour masquer ta form met   Me.Visible=False et avec .ShowInTaskBar c'est suffisant

@+
LIM
3
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
15 févr. 2008 à 16:11
Salut,

   C'est une application console que tu as fait ?

   Car avec une applciation Forms (une fenêtre, un bouton) et la déclaration de ta classe çà marche.

@+
LIM
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 12
15 févr. 2008 à 16:32
salut,

en fait, je cherche a mettre au point un systeme d'alertes pour me notifier des evenements.


je m'explique, je cherche a realiser une appli qui se lance au demarrage de windows et qui va interroger (en mode deconnecte) 1 BDD qui contient les evenements marquants de ma journées (anniversaires, rdv, ...).
si un evenement arrive dans les prochaines x minutes, une boite de dialoge me previent pour me rappeler la chose (d'ou la necessite d'un timer pour verifier l'eligibilite de neaux evenements).


tout cela pourrait etre realiser en mode console mais j'aiemrais que la BDD soit administrable via un petit icone a cote de l'horloge windows (en bas a droite).
en faisant 1 clique droit sur cet icone j'aurais differents menus me permettant d'arreter l'appli, d'envoyer des Form pour ajouter ou modifier des evenements, ...


ainsi, au demarrage, il n'y aurait pas de fenetres a cette appli (ce serait programme resident). cependant, si l'utilisateur decide d'enregistrer ou de modifier un evenement une interface dediee lui permettra de realiser l'ensemble de ces operations.

merci a toi !
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
15 févr. 2008 à 16:42
Re

   Je ne vois ou est le problème, ce que je ferais moi c'est une application avec une Form, cette form te lance le timer et  d'autre chose si necessaire, tu peux lancer l'appli au démarrage de windows et tu la cache dans en icone dans le systray

   j'ai eu fait une appli qui faisait tout çà (sauf le timer) elle géré des évènnements windows

@+
LIM
0
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 12
15 févr. 2008 à 16:55
ok pour ta reponse. merci a toi !

mais sinon, par simple curiosite intellectuectuelle pourrais-tu me dire pourquoi comment faire fonctionner ce prg :
Module ProcGles
    Sub Main()
        Dim LancerVeille As New Veilleuse()
    End Sub
End Module
Public Class Veilleuse
    Private WithEvents cpte As New Timer
    Public Sub New()
        cpte.Interval = 1000
        cpte.Start()
    End Sub
    Private Sub cpte_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles cpte.Tick
        MsgBox(1)
    End Sub
End Class

merci,

alonsyl
0
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 12
15 févr. 2008 à 17:10
OK OK OK !!!
je vois maintenant pourquoi j'ai obligation d'utiliser 1 Form.

grand merci a toi pour m'avoir accorde de ton temps,

alonsyl
0
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 12
15 févr. 2008 à 17:39
desole de te deranger a neau mais pourrais-tu m'indiquer comment realiser l'operation suivante :
"tu peux lancer l'appli au démarrage de windows et tu la cache dans en icone dans le systray"

merci a toi,

alonsyl
0
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 12
15 févr. 2008 à 22:28
salut,

pour masquer ma form, j'utilise les commande suivantes :
Me

.ClientSize =
New System.Drawing.Size(0, 0) '=> ma form fait 0 de haut et 0 de large

Me

.ShowInTaskbar =
False '=> elle n'apparait pas dans la berre des windows du menu "demarrer"

qu'en penses-tu ? est-ce suffisant ?

merci a toi !

alonsyl
0
Rejoignez-nous