Page 1 sur 2

recuperer infos mail

Publié : ven. 07/déc./2007 8:31
par david
bonjour, j'ai besoin d'un prog en purebasic qui "voit" les arrivées de messages dans ma messagerie pour démarrer un sous-programme chaque fois qu'il y aura un message arrivant portant le sujet "xyz"
le but c'est de dire que de n'importe qu'elle adresse, je puisse m'envoyer
un mail avec le sujet "xyz+code a 6 chiffres a récupérer"

peut importe xyz naturellement
utiliser RIGHT... pour récupérer les 6 derniers carractères de la chaine$

par contre j'ai bien examiné les fonctions mail... et lu beaucoup d'articles
j'ai vu que pour envoyer des mails c'est très compliqué (besoin smttp....)

ce programme est très important pour moi, car je souhaiterais en fait pouvoir envoyer de n'importe ou un mail a ma boite qu'il identifiera comme étant le code, il récupére le code, et il lancera (ça je sais faire) le programme souhaité et composera le code (a priori ça devrait aller aussi) le code pour exécuter celui-ci en mon absence.
le planificateur de tache n'est pas adapté, il faut vraiement que ça se fasse a un moment donné

je sais que c'est un des trucs les plus compliqués ce qui touche aux mails... mais je ne saurais que trop rendre grace (voir plus?) si quelqu'un savait faire un truc genre ça
d'habitude je demande une piste de travail, mais la de toute façon je ne serait pas du tout a la hauteur!!!
(enfin au pire si j'ai un début de piste j'essaierais toujours même si je met 10 ans...)

merci d'avance à ce qui m'aideront
et à tous les utilisateurs de purebasic qui est le truc le plus cool qu'on a pu inventer dans le monde de l'informatique

david

Publié : ven. 07/déc./2007 10:12
par Backup
il existe quelques librairie qui te donneront des fonctions toute faite
pour relever un email ou meme en envoyer .. :)
tu trouvera des liens interressant ici , pour ce qui concerne les librairies ...
http://michel.dobro.free.fr/pages_html/liens.htm


pour creer une "telecomande" qui lance un prg en fonction d'un email preci
il te faudra surement utiliser les timers (voir les exemple avec le mot 'Timer') sur notre forum

parce les timers te permetront d'avoir un prg qui surveillera de façon periodique l'arrivé d'un email.. (a moins que cette fonction soit deja dispo dans une librairie bien sur ...) :)

ensuite un petit tour dans la partie "Process" de la Doc de Purebasic te permetra de trouver ce qu'il te faut pour lancer une aplications a partir de ton prg .. :)


voila cela ne me semble pas trop complique, il faut juste bien lire les Docs des Librairies, et puis voila ... en clair , ça ne me parait pas trop dificile a faire .. :)

Publié : ven. 07/déc./2007 12:56
par Oliv
Il y a la librairie POP3 sur PureArea, sinon si tu préferres le faire toi même, il y a le site www.iprenalx.net qui est très bien fait. regarde la commande "head", je pense que ça devrait te suffir. Fait aussi une recherche sur le forum, je crois que j'avais posté des exemples.

message erreur purebasic probleme librairie

Publié : lun. 10/déc./2007 8:54
par david
bon, j'ai essayé de faire le bout de programme suivant :

Code : Tout sélectionner

;==============================================
result =OpenLibrary(0, "BpePOP3.dll") ;charger la dll
If result = 0 :MessageRequester("Erreur!", "Le fichier 'BpePOP3.dll' n'a pas été trouvé..." , #MB_ICONERROR):EndIf  
  
username$="david.turquin@wanadoo.fr"
password$="mon mot de passe messagerie"



result = POP3_Init() ;initilaiser
If result = 0 :MessageRequester("Erreur!", "Le programme n'a pas réussi à s'initialiser..." , #MB_ICONERROR):EndIf

result = POP3_Connect(server$, port) ;connecter serveur
If result = 0 :MessageRequester("Erreur!", "Problème de connexion au serveur..." , #MB_ICONERROR):EndIf

result = POP3_Logon(username$, password$) ;identifer
If result = 0 :MessageRequester("Erreur!", "Problème d'identification..." , #MB_ICONERROR):EndIf

;================================================
FicIcon$="Gaby4.ico" ;ouvre ico dans le répertoire en cours

If OpenWindow(0, 0, 0, 0, 0, "MasterViewer",#PB_Window_Invisible) 
  CreatePopupMenu(1) 
  MenuItem(1,"Redonner code") 
  MenuItem(3,"A propos") 
  MenuItem(4,"Quitter") 
  AddSysTrayIcon(0, WindowID(0), LoadImage(0, FicIcon$)) 
EndIf 


Repeat 
;=============
nMessages = POP3_GetMsgCount() 
If nMessages<> 0 
For i = 1 To nMessages
result = POP3_ParseMsgHeader( i ) 
fieldText$ = POP3_HeaderSubject()
If fieldText$="MON SUJET": MessageRequester("MasterViewer","j'ai identifié mon SUBJECT et lancera le sous-programme"):EndIf
Next i
EndIf
;**********
;=================

  Select WindowEvent()
    Case #PB_Event_SysTray 
      DisplayPopupMenu(1, WindowID(0)) 
    Case #PB_Event_Menu 
      Select EventMenu() 
        Case 1 ; Redonner code
          MessageRequester("MasterViewer","Code d'identifaction : "+"xyz")
          Case 3 ; A propos 
          MessageRequester("A propos de...","MasterViewer"+Chr(13)+"Gestionnaire d'identification a distance") 
        Case 4 ; Quitter 
          quit=1 
      EndSelect 
  EndSelect 
  
Until quit=1 
End 
j'ai le message d'erreur suivant (avec PB4.0) :
PureBasic - Error
Error: The following PureLibrary is missing : LibraryExtension

Pourtant j'ai bien mis la dll dans PureLibrairie/UserLibrairie

Si quelqu'un peut me dire ce qui ne va pas.....
Merci de vérifier un peu le reste du programme que j'ai fait comme j'ai pu
Je sais pas pourquoi mais j'ai bien peur qu'une fois solutionné mon pb
je vais me rendre compte que ca ne marche toujours pas (le probleme recurent du debutant!)

merci d'avance

Re: message erreur purebasic probleme librairie

Publié : lun. 10/déc./2007 10:26
par Backup
david a écrit :

Code : Tout sélectionner

;==============================================
result =OpenLibrary(0, "BpePOP3.dll") ;charger la dll
j'ai le message d'erreur suivant (avec PB4.0) :
PureBasic - Error
Error: The following PureLibrary is missing : LibraryExtension

Pourtant j'ai bien mis la dll dans PureLibrairie/UserLibrairie
justement si tu as installé la librairie pourquoi tu cherche a charger la dll ?

une librairie installée dans Purebasic, permet que l'on puisse appeler directement les commande d'une librairie comme si c'étais des commandes PureBasic !! :D

tu peux utiliser directement "POP3_Init()"
sans avoir a charger quoi que ce soit !!

la librairie installé , fait partie de Purebasic, cela ajoute les commandes de la librairie a PureBasic , comme si c'était des commandes Natives , ( des commandes Purebasic) :D

et a la compilation, tu n'as pas besoin de joindre la Dll
le code contiendra tout ce qu'il faut .. :D


C'est Trop Fort PureBasic :D

Re: message erreur purebasic probleme librairie

Publié : lun. 10/déc./2007 15:09
par gnozal
david a écrit :j'ai le message d'erreur suivant (avec PB4.0) :
PureBasic - Error
Error: The following PureLibrary is missing : LibraryExtension
Tu utilises une librarie utilisateur pour PB3.9x non compatible avec PB4.xx ...

Sur PureArea, il faut vérifier la compatibilité des librairies (éventuellement s'aider de la date de sortie si non précisé) !
Elles existent souvent en plusieurs versions.

correction avec pb 3-92

Publié : lun. 10/déc./2007 21:47
par david
bien vu pour la version de la librairie (et pour la façon de l'utiliser!!!)

après correction avec pb 3-92 ça donne:

Code : Tout sélectionner

 
username$="david.turquin@wanadoo.fr"
password$="mon mot de passe messagerie"



result = POP3_Init() ;initilaiser
If result = 0 :MessageRequester("Erreur!", "Le programme n'a pas réussi à s'initialiser..." , #MB_ICONERROR):EndIf

result = POP3_Connect(server$, port) ;connecter serveur
If result = 0 :MessageRequester("Erreur!", "Problème de connexion au serveur..." , #MB_ICONERROR):EndIf

result = POP3_Logon(username$, password$) ;identifer
If result = 0 :MessageRequester("Erreur!", "Problème d'identification..." , #MB_ICONERROR):EndIf

;================================================
FicIcon$="Gaby4.ico" ;ouvre ico dans le répertoire en cours

If OpenWindow(0, 0, 0, 0, 0,#PB_Window_Invisible,"MasterViewer") 
  CreatePopupMenu(1) 
  MenuItem(1,"Redonner code") 
  MenuItem(3,"A propos") 
  MenuItem(4,"Quitter") 
  AddSysTrayIcon(0, WindowID(0), LoadImage(0, FicIcon$)) 
EndIf 


Repeat 
;=============
nMessages = POP3_GetMsgCount() 
If nMessages<> 0 
For i = 1 To nMessages
result = POP3_ParseMsgHeader( i ) 
fieldText$ = POP3_HeaderSubject()
If fieldText$="MON SUJET": MessageRequester("MasterViewer","j'ai identifié mon SUBJECT et lancera le sous-programme"):EndIf
Next i
EndIf
;**********
;=================

  Select WindowEvent()
    Case #PB_Event_SysTray 
      DisplayPopupMenu(1, WindowID(0)) 
    Case #PB_Event_Menu 
      Select EventGadgetID()

        Case 1 ; Redonner code
          MessageRequester("MasterViewer","Code d'identifaction : "+"xyz")
          Case 3 ; A propos 
          MessageRequester("A propos de...","MasterViewer"+Chr(13)+"Gestionnaire d'identification a distance") 
        Case 4 ; Quitter 
          quit=1 
      EndSelect 
  EndSelect 
  
Until quit=1 
End 

par contre :
username$ c'est bien mon adresse mail?
passeword$ c'est mon mot de passe de messagerie?
server$: ?
port:?

moi je dispose d'un identifiant de connexion, mot de passe de connexion, mon adresse mail, mon identifiant de messagerie, et mot de passe de messagerie

JE SUIS DESOLE MAIS LA DOC DE LA LIB EST PAS TRES BAVARDE ET DE TOUTE FACON C'EST QUE DE L'ANGLAIS ALORS J'ESSAIE DE COMPRENDRE MAIS C'EST PAS EVIDENT CAR DEJA JE DEBUTE AVEC PB ET J'AI JAMAIS ETE BON EN ANGLAIS
(merci pour votre aide!!)

Publié : lun. 10/déc./2007 21:55
par RV
Il se peut que ton username$ soit david.turquin et pas david.turquin@wanadoo.fr :wink:

Publié : lun. 10/déc./2007 22:09
par Oliv
Le serveur est pop.wanadoo.fr et le port est le port 110 :wink:

Publié : lun. 10/déc./2007 22:25
par RV
@david
Donc aprés

Code : Tout sélectionner

username$="david.turquin@wanadoo.fr" 
password$="mon mot de passe messagerie"
rajoute

Code : Tout sélectionner

server$=pop.wanadoo.fr
port=110
comme demandé ici

Code : Tout sélectionner

result = POP3_Connect(server$, port) ;connecter serveur 
Je ne connaissais pas cette Lib, moi je suis passé par autre chose sans Lib pour faire ce que tu cherches à faire!
Et même par un téléphone portable par MMS je déclenche via la boite mail l'application que je souhaite! 8)
Mais vas-y david, tu y es presque! :D

probleme de boucle ?

Publié : mar. 11/déc./2007 7:54
par david
bon, je suis allé plus loin dans le programme que ce qui suit, mais il y a plein de petite choses qui ne fonctionnent pas mais que j'espère trouver seul...

dans ma sauvegarde précèdente :

Code : Tout sélectionner

username$="david.turquin"
password$="xyz"
server$="pop.wanadoo.fr" 
port=110


result = POP3_Init() ;initilaiser
If result = 0 :MessageRequester("Erreur!", "Le programme n'a pas réussi à s'initialiser..." , #MB_ICONERROR):EndIf

result = POP3_Connect(server$, port) ;connecter serveur
If result = 0 :MessageRequester("Erreur!", "Problème de connexion au serveur..." , #MB_ICONERROR):EndIf

result = POP3_Logon(username$, password$) ;identifer
If result = 0 :MessageRequester("Erreur!", "Problème d'identification..." , #MB_ICONERROR):EndIf

;================================================
FicIcon$="Gaby4.ico" ;ouvre ico dans le répertoire en cours

If OpenWindow(0, 0, 0, 0, 0,#PB_Window_Invisible,"MasterViewer") 
  CreatePopupMenu(1) 
  MenuItem(1,"Redonner code") 
  MenuItem(3,"A propos") 
  MenuItem(4,"Quitter") 
  AddSysTrayIcon(0, WindowID(0), LoadImage(0, FicIcon$)) 
EndIf 


Repeat 
;=============
nMessages = POP3_GetMsgCount() 
If nMessages<> 0 :MessageRequester("MasterViewer","j'ai des messages!!!")
For i = 1 To nMessages
result = POP3_ParseMsgHeader( i ) 
fieldText$ = POP3_HeaderSubject()
If fieldText$="MON SUJET": MessageRequester("MasterViewer","j'ai identifié mon SUBJECT et lancera le sous-programme"):EndIf
Next i
EndIf
;**********
;=================

  Select WindowEvent()
    Case #PB_Event_SysTray 
      DisplayPopupMenu(1, WindowID(0)) 
    Case #PB_Event_Menu 
      Select EventGadgetID()

        Case 1 ; Redonner code
          MessageRequester("MasterViewer","Code d'identifaction : "+"xyz")
          Case 3 ; A propos 
          MessageRequester("A propos de...","MasterViewer"+Chr(13)+"Gestionnaire d'identification a distance") 
        Case 4 ; Quitter 
          quit=1 
      EndSelect 
  EndSelect 
  
Until quit=1 
End 
si je lance le programme et qu'il n'y a pas de message il dit rien
si je lance le programme et qu'il y a des messages il dit messages!
par contre si je le lance qu'ili n'y a pas de messages et qu'au bout d'un moment il y en a qui arrivent il me dit rien, et c'est là que j'aurais souhaité qu'il me parle.....

probleme dans ma boucle?

Publié : mar. 11/déc./2007 9:26
par Jacobus
Pour ça il faut que tu utilises un timer qui relancera la vérification par intervalles de temps réguliers. sans timer la vérif se fait une fois et c'est tout.

Publié : mar. 11/déc./2007 10:04
par RV
Pareil pour moi, j'aurais mis un timer pour réguler tout ça! :wink:

Et ça

Code : Tout sélectionner

result = POP3_Init() ;initilaiser 
If result = 0 :MessageRequester("Erreur!", "Le programme n'a pas réussi à s'initialiser..." , #MB_ICONERROR):EndIf 

result = POP3_Connect(server$, port) ;connecter serveur 
If result = 0 :MessageRequester("Erreur!", "Problème de connexion au serveur..." , #MB_ICONERROR):EndIf 

result = POP3_Logon(username$, password$) ;identifer 
If result = 0 :MessageRequester("Erreur!", "Problème d'identification..." , #MB_ICONERROR):EndIf 
je l'aurais mis dans la boucle avant ça

Code : Tout sélectionner

nMessages = POP3_GetMsgCount() 
If nMessages<> 0 :MessageRequester("MasterViewer","j'ai des messages!!!") 
For i = 1 To nMessages 
result = POP3_ParseMsgHeader( i ) 
fieldText$ = POP3_HeaderSubject() 
If fieldText$="MON SUJET": MessageRequester("MasterViewer","j'ai identifié mon SUBJECT et lancera le sous-programme"):EndIf 
Next i 
EndIf 
Au cas ou tu perds la connection à ton serveur! :wink:

Un autre truc aussi concernant ton PopupMenu, c'est pas

Code : Tout sélectionner

Select EventGadgetID() 
mais

Code : Tout sélectionner

Select EventMenu() 

Publié : sam. 15/déc./2007 7:43
par david
ben, mon programme un peu plus avancé :

Code : Tout sélectionner

;CHARGER PARAM.TXT ;=============================================================================
If ReadFile(0, "Param.txt")
While Eof(0) = 0
    protect1$= ReadString() ;met en mémoire moi pour contrôle si pas déplombé
    protect2$= ReadString():protect2$= ReadString():protect2$= ReadString()
    username$= ReadString():protect2$= ReadString():protect2$= ReadString()
    password$ = ReadString():protect2$= ReadString():protect2$= ReadString()
    server$ = ReadString():protect2$= ReadString():protect2$= ReadString()
    port$ = ReadString():protect2$= ReadString():protect2$= ReadString()
    subject$=ReadString()
   Wend
  CloseFile(0)
;
If protect1$ <> "MasterViewer - David TURQUIN @2008" ;vérif MOI tjs écrit 'dans param.txt'
MessageRequester("MasterViewer", "Le fichier 'param.txt' a été modifié sans autorisation" , #MB_ICONERROR)
MessageRequester("MasterViewer", "Première ligne = 'MasterViewer - David TURQUIN @2008'" , #MB_ICONERROR)
End
EndIf
Else
  MessageRequester("MasterViewer", "Le fichier 'param.txt' n'a pas pu être chargé...", #MB_ICONERROR)
  End
EndIf
port = Val(port$) ; Resultat recevra la valeur du port
nDejavu = 0

;INITIALISATION DU PROGRAMME  ;=============================================================================
result = POP3_Init() ;initilaiser
If result = 0 :MessageRequester("Erreur!", "Le programme n'a pas réussi à s'initialiser..." , #MB_ICONERROR):EndIf

result = POP3_Connect(server$, port) ;connecter serveur
If result = 0 :MessageRequester("Erreur!", "Problème de connexion au serveur..." , #MB_ICONERROR):EndIf

result = POP3_Logon(username$, password$) ;identifer
If result = 0 :MessageRequester("Erreur!", "Problème d'identification..." , #MB_ICONERROR):EndIf

;FENETRE MENU DU PROGRAMME  ;===========================================================================
FicIcon$="Gaby4.ico" ;ouvre ico dans le répertoire en cours

If OpenWindow(0, 0, 0, 0, 0,#PB_Window_Invisible,"MasterViewer") 
  CreatePopupMenu(1) 
  MenuItem(1,"Redonner code") 
  MenuItem(3,"A propos") 
  MenuItem(4,"Quitter") 
  AddSysTrayIcon(0, WindowID(0), LoadImage(0, FicIcon$)) 
EndIf 


Repeat 
;=============
nMessages = POP3_GetMsgCount() 
If nMessages<> 0 And nDejavu = 0:MessageRequester("MasterViewer","j'ai des messages!!!")
For i = 1 To nMessages
result = POP3_ParseMsgHeader( i ) 
fieldText$ = POP3_HeaderSubject()
If fieldText$=subject$: MessageRequester("MasterViewer","j'ai identifié mon SUBJECT et lancera le sous-programme"):EndIf
Next i
nDejavu = 1
EndIf
;**********
;=================

  Select WindowEvent()
    Case #PB_Event_SysTray 
      DisplayPopupMenu(1, WindowID(0)) 
    Case #PB_Event_Menu 
      Select EventGadgetID()

        Case 1 ; Redonner code
          MessageRequester("MasterViewer","Code d'identifaction : "+"xyz")
          Case 3 ; A propos 
          MessageRequester("A propos de...","MasterViewer"+Chr(13)+"Gestionnaire d'identification a distance") 
        Case 4 ; Quitter 
          quit=1 
      EndSelect 
  EndSelect 
  
Until quit=1 
End 
par contre j'essaie de l'appeler toutes les 3 secondes pour mon probleme cité plus haut (détecte au lancement mais pas en temps réel)
j'ai essayé de hum.... bon enfin j'ai pas fait que ça mais je peux pas vous montrer tous les trucs que j'ai fait et qui ne fonctionnent pas
là en fait j'assimile pas et je ne pourrais pas avancer la suite de mon pg sinon je vais m'y perdre

Code : Tout sélectionner

;CHARGER PARAM.TXT ;=============================================================================
If ReadFile(0, "Param.txt")
While Eof(0) = 0
    protect1$= ReadString() ;met en mémoire moi pour contrôle si pas déplombé
    protect2$= ReadString():protect2$= ReadString():protect2$= ReadString()
    username$= ReadString():protect2$= ReadString():protect2$= ReadString()
    password$ = ReadString():protect2$= ReadString():protect2$= ReadString()
    server$ = ReadString():protect2$= ReadString():protect2$= ReadString()
    port$ = ReadString():protect2$= ReadString():protect2$= ReadString()
    subject$=ReadString()
   Wend
  CloseFile(0)
;
If protect1$ <> "MasterViewer - David TURQUIN @2008" ;vérif MOI tjs écrit 'dans param.txt'
MessageRequester("MasterViewer", "Le fichier 'param.txt' a été modifié sans autorisation" , #MB_ICONERROR)
MessageRequester("MasterViewer", "Première ligne = 'MasterViewer - David TURQUIN @2008'" , #MB_ICONERROR)
End
EndIf
Else
  MessageRequester("MasterViewer", "Le fichier 'param.txt' n'a pas pu être chargé...", #MB_ICONERROR)
  End
EndIf
port = Val(port$) ; Resultat recevra la valeur du port
nDejavu = 0

;INITIALISATION DU PROGRAMME  ;=============================================================================
result = POP3_Init() ;initilaiser
If result = 0 :MessageRequester("Erreur!", "Le programme n'a pas réussi à s'initialiser..." , #MB_ICONERROR):EndIf

result = POP3_Connect(server$, port) ;connecter serveur
If result = 0 :MessageRequester("Erreur!", "Problème de connexion au serveur..." , #MB_ICONERROR):EndIf

result = POP3_Logon(username$, password$) ;identifer
If result = 0 :MessageRequester("Erreur!", "Problème d'identification..." , #MB_ICONERROR):EndIf

;FENETRE MENU DU PROGRAMME  ;===========================================================================
FicIcon$="Gaby4.ico" ;ouvre ico dans le répertoire en cours

If OpenWindow(0, 0, 0, 0, 0,#PB_Window_Invisible,"MasterViewer") 
  CreatePopupMenu(1) 
  MenuItem(1,"Redonner code") 
  MenuItem(3,"A propos") 
  MenuItem(4,"Quitter") 
  AddSysTrayIcon(0, WindowID(0), LoadImage(0, FicIcon$)) 
EndIf 

Procedure AlertThread(Parameter)
Repeat 
;=============
nMessages = POP3_GetMsgCount() 
If nMessages<> 0 And nDejavu = 0:nDejavu = 1:MessageRequester("MasterViewer","j'ai des messages!!!")
For i = 1 To nMessages
result = POP3_ParseMsgHeader( i ) 
fieldText$ = POP3_HeaderSubject()
If fieldText$=subject$: MessageRequester("MasterViewer","j'ai identifié mon SUBJECT et lancera le sous-programme"):EndIf
Next i
nDejavu = 1
EndIf
   Delay(10000)
  ForEver
EndProcedure
;**********
;=================


Repeat
CreateThread(@AlertThread(), 154)
  Select WindowEvent()
    Case #PB_Event_SysTray 
      DisplayPopupMenu(1, WindowID(0)) 
    Case #PB_Event_Menu 
      Select EventGadgetID()

        Case 1 ; Redonner code
          MessageRequester("MasterViewer","Code d'identifaction : "+"xyz")
          Case 3 ; A propos 
          MessageRequester("A propos de...","MasterViewer"+Chr(13)+"Gestionnaire d'identification a distance") 
        Case 4 ; Quitter 
          quit=1 
      EndSelect 
  EndSelect 
  
Until quit=1 
End 
ps:merci de ne pas dire que c'est mal placé....
par contre je ne comprend pas pourquoi

Code : Tout sélectionner

If nMessages<> 0 And nDejavu = 0
et il tourne toujours alors que je lui dis quand t'as vu

Code : Tout sélectionner

 nDejavu = 1
merci d'avance de votre compréhension, car je debute, et il y a toujours des choses qu'on maitrise mieux que d'autres....

cordialement

Publié : sam. 15/déc./2007 9:55
par RV
Salut david,
par contre je ne comprend pas pourquoi

Code : Tout sélectionner

If nMessages<> 0 And nDejavu = 0 
et il tourne toujours alors que je lui dis quand t'as vu

Code : Tout sélectionner

 nDejavu = 1 
Déclare ta variable en Global (en tout début de prog) pour pouvoir la lire et la modifier partout, même dans tes procédures

Code : Tout sélectionner

Global nDejavu
ps:merci de ne pas dire que c'est mal placé....
Ben si tu veux que ça marche...
Genre ton Thread...crée-le en dehors de ta boucle principale car dans ton cas tu recrées ton thread en continu

Code : Tout sélectionner

CreateThread(@AlertThread(), 154)
Repeat 
  ...  
Until quit=1 

Un petit truc aussi

Code : Tout sélectionner

Select WindowEvent()
remplace-le par

Code : Tout sélectionner

Select WaitWindowEvent()
pour pouvoir rendre la main à windows et éviter de faire ramer ton ordi pour rien!

:wink: