PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Récupération d'un événement Windows dans un service
Récupération d'un événement Windows dans un service
Iniciado por Georges BONNEVIAL, 30,may. 2013 10:11 - 2 respuestas
Publicado el 30,mayo 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
Miembro registrado
13 mensajes
Publicado el 28,marzo 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
Miembro registrado
511 mensajes
Popularité : +18 (18 votes)
Publicado el 29,marzo 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/…
Mensaje modificado, 29,marzo 2024 - 16:29