PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Récupération d'un événement Windows dans un service
Récupération d'un événement Windows dans un service
Started by Georges BONNEVIAL, May, 30 2013 10:11 AM - 2 replies
Posted on May, 30 2013 - 10:11 AM
Bonjour,
Est-il possible de récupérer un événement Windows tel que "WM_USER+1300"
par exemple, dans un service Windows crée à partir de Windev.

Je viens de faire un test sans succès , sachant que j'ai utilisé
l'instance() de mon service dans la commande PostMessage()

Merci de votre retour

Cordialement,

Georges BONNEVIAL
Registered member
13 messages
Posted on March, 28 2024 - 9:45 AM
Bonjour,
Je me permets de relancer ce sujet.
Aujourd'hui, j'utilise le code ci-dessous pour détecter la connexion de nos produits sur le PC dans une application.
Je souhaiterais faire la même chose dans un service.
Et cela ne fonctionne pas.
Jamais je ne passe dans ma fonction liée à l'évènement.
//On surveille l’événement de connexion d'un produit
Evénement(HID_base1.informe, "*.*",WM_DEVICECHANGE)

Merci pour vos commentaires et votre aide.

--
Christophe
Registered member
511 messages
Popularité : +18 (18 votes)
Posted on March, 29 2024 - 4:28 PM
Bonjour Christophe,

Comme il s'agit d'un service, il est possible que le mécanisme de diffusion de message Windows ne soit pas opérant.

Avez-vous essayé de déclarer explicitement le Handle de la fenêtre qui doit traiter les notifications (message WM_DEVICECHANGE) ?

Pour ça il faut exécuter une API Windows : RegisterDeviceNotificationA ou RegisterDeviceNotificationW.
https://learn.microsoft.com/fr-fr/windows/win32/api/winuser/nf-winuser-registerdevicenotificationa
(le paramètre NotificationFilter est peut être le point le plus technique)

Et ensuite vous "branchez" l'événement en indiquant le nom de la fenêtre.

Si vous n'arrivez pas à faire fonctionner les événements, apparemment il y a une autre fonctionnalité plus "moderne" qui n'a pas besoin de Handle et qui utilise une procédure de rappel (callback) à la place de la gestion d'événement :
API Windows : CM_Register_Notification.
https://learn.microsoft.com/fr-fr/windows/win32/api/cfgmgr32/nf-cfgmgr32-cm_register_notification

Mais à investiguer en dernier ressort. :-)
--
Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…
Message modified, March, 29 2024 - 4:29 PM