Lancement d'une application externe avec un temporisateur et un intervalle varia

remilafouine Messages postés 32 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 11 juin 2007 - 22 août 2005 à 22:05
remilafouine Messages postés 32 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 11 juin 2007 - 27 août 2005 à 00:21
Bonjour à tous !

Je sais que ce genre de questions existent déjà, mais je n'ai pas réussi à utiliser ce que j'ai trouvé...

Comme je le dit dans le sujet, je voudrais lancer une application externe (c:\test.bat) à intervalles réguliers, et en modifiant cet intervalle... Voici la liste des composants et leur nom :
- NumericUpDown1 => permet de modifier l'intervalle en minutes
- Timer1 => c'est le timer de mon programme

Je sais aussi que l'intervalle doit etre en milisecondes, et ne dois pas dépasser 60s soit 1min.
Je pense qu'il faudrait demander à Timer1 de se répéter le nombre de fois inscrit dans NumericUpDown1, et en régant son intervalle sur 1min.

Ce que j'ai déja fait, c'est d'invoquer le Timer grace à ce code :
Imports System
Imports System.Timers
Imports System.Threading



Public Class Timer1


Public Shared Sub Main()
Dim aTimer As New System.Timers.Timer
AddHandler aTimer.Elapsed, AddressOf OnTimedEvent
' Set the Interval to 5 seconds.
aTimer.Interval = 5000
aTimer.Enabled = True
End Sub


Private Shared Sub OnTimedEvent(ByVal source As Object, ByVal e As ElapsedEventArgs)
Shell("c:\test.bat")
End Sub
End Class
Logiquement, avec ce code, l'application devrait se lancer au moins une fois, mais elle ne se lance jamais...

J'espère que quelqu'un pourra m'aider... Merci à tous !!

6 réponses

remilafouine Messages postés 32 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 11 juin 2007 1
22 août 2005 à 22:17
Désolé, le code exact est :
Imports System
Imports System.Timers
Imports System.Threading
**********************************
Code de la fenêtre Form1
**********************************


Public Shared Sub Main()
Dim aTimer As New System.Timers.Timer
AddHandler aTimer.Elapsed, AddressOf OnTimedEvent
' Set the Interval to 5 seconds.
aTimer.Interval = 5000
aTimer.Enabled = True
End Sub


Private Shared Sub OnTimedEvent(ByVal source As Object, ByVal e As ElapsedEventArgs)
Shell("c:\test.bat")
End Sub
End Class

Normalement, l'application devrait se lancer toutes les 5 secondes dans cet exemple, mais elle ne se lance pas du tout...
Et encore plus bizarre, mon programme s'ouvre et se referme dessuite... et elle ne lance meme pas l'application externe...
0
domsig Messages postés 125 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 11 mai 2010
23 août 2005 à 08:51
je crois qu'il faut déclarer une variable et lui affecter le retour du shell, du style :

Private Shared Sub OnTimedEvent(ByVal source As Object, ByVal e As ElapsedEventArgs)
dim x as variant
x= Shell("c:\test.bat")
End Sub

en tout cas en vb6, et d'après l'aide de vb.net c'est le cas aussi.

bon courage
0
remilafouine Messages postés 32 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 11 juin 2007 1
23 août 2005 à 14:43
Tu veux dire que je dois remplacer le code précédent par celui la ?

J'ai essayé de remplacer la partie Private Shared Sub... de mon code, mais la fenêtre ne se lance pas...
Enfin, si, elle se lance, mais je n'ai rien à mon écran, puis l'application se termine toute seule et je reviens automatiquement à Visual Stuido .Net...
0
domsig Messages postés 125 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 11 mai 2010
23 août 2005 à 17:27
tiens voilà ton code tel que tu l'as exposé ci-dessus, modifié comme je pense qu'il doit l'être :



Imports System
Imports System.Timers
Imports System.Threading
**********************************
Code de la fenêtre Form1
**********************************



Public Shared Sub Main()
Dim aTimer As New System.Timers.Timer
AddHandler aTimer.Elapsed, AddressOf OnTimedEvent
' Set the Interval to 5 seconds.
aTimer.Interval = 5000
aTimer.Enabled = True
End Sub


Private Shared Sub OnTimedEvent(ByVal source As Object, ByVal e As ElapsedEventArgs)

dim x as variant

x = Shell("c:\test.bat")
End Sub
End Class

voilà j'espère que ça marche sinon n'hésite pas j'ai vb.net au bureau...
0

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

Posez votre question
remilafouine Messages postés 32 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 11 juin 2007 1
23 août 2005 à 21:50
J'ai essayé, mais ca ne marche toujours pas...

Quand je presse la touche F5 pour tester l'application, Visual Studio
.Net 2003 se met en mode "Lecture Seule" comme si il lançait
l'application, mais revient dessuite en mode "Edition", et ne lance pas
l'application...
J'ai essayé de la lancer manuellement en allant dans Mes Documents, mais l'application se referme des que je la lance...



Peut être que ça vient de mon système d'exploitation... J'ai Windows
Codename Longhorn Build 4074... C'est peut être un imcompatibilité au
niveau du Framework...
0
remilafouine Messages postés 32 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 11 juin 2007 1
27 août 2005 à 00:21
J'ai essayé de faire une action en boucle.Voila le code que j'ai utilisé :


Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim test, message
test = Shell("c:\test.bat")
message = Shell("c:\message.bat")
boucle:
test.Run()
test.Sleep(5000)
message.Run()
message.Sleep(10000)
Goto boucle
End Sub

Ce qui est certain, c'est que j'ai fait une grosse bétise... L'application s'est lancée, et a démarré toutes les lignes de commande sans s'arréter, en boucle, sans attendre les 5 et 10 secondes...
En gros, plantage du PC car ressources utilisées à 100%, et 2590 Mo de mémoire (physique + virtuelle) utilisée sur 2000 environ... Résultat, un reboot forcé...

HELP PLEASE !!!
0
Rejoignez-nous