PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e 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, mai., 30 2013 10:11 AM - 2 respostas
Publicado em maio, 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
Membro registado
13 mensagems
Publicado em março, 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
Membro registado
511 mensagems
Popularité : +18 (18 votes)
Publicado em março, 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/…
Mensagem modificada, março, 29 2024 - 4:29 PM