PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Récupération d'un événement Windows dans un service
Récupération d'un événement Windows dans un service
Débuté par Georges BONNEVIAL, 30 mai 2013 10:11 - 2 réponses
Posté le 30 mai 2013 - 10:11
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
Membre enregistré
13 messages
Posté le 28 mars 2024 - 09:45
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
Membre enregistré
511 messages
Popularité : +18 (18 votes)
Posté le 29 mars 2024 - 16:28
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 modifié, 29 mars 2024 - 16:29