Problème de hook clavier [Résolu]

Signaler
Messages postés
150
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
16 février 2009
-
Messages postés
150
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
16 février 2009
-
Bonjour tout le monde,

Je suis en train de créer un programme me permettant d'utiliser qu'un seul clavier sur deux ordinateurs (grâce à une connection socket et un hook du clavier).

J'ai une Dll pour le hook sur le clavier et un service permettant de gérer les envois pour les changements de touche. Ma Dll reçoit bien les changements de touche quand elle est chargée depuis un executable "normal" mais pas depuis mon serivce.
Es-ce-que les hook ne marchent pas avec un service ???

4 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Inscrit ton prog dans clé 'run' de la base de registres.

ciao...
BruNews, MVP VC++
Messages postés
150
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
16 février 2009

Je crois que je pourrais avencer un début de réponse à ma question. Ce post dans un forum est très intéréssant: ici.

Selon ndietrich ce serait donc impossible de faire un hook depuis un
service. Mais alors comment faire un hook dès le démarrage du système?
Je ne vois vraiment pas d'autres solutions... Es-ce-que quelqu'un
voit une solution ?

La taupe voit toujours tout (sauf les bugs)
Messages postés
150
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
16 février 2009

Oui merci Brunews, au début j'avais fait un service, mais d'après ce
que j'ai vu sur un autre forum il est impossible de faire un hook
depuis un service. Alors je vais faire comme tu le dis, je vais faire
un programme et non un service qui s'occupera de faire un hook sur le
clavier.


La taupe voit toujours tout (sauf les bugs)
Messages postés
150
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
16 février 2009

Et voilà, c'est re-moi.



Je n'ai pas testé, mais en utilisant l'API OpenDesktop,
OpenWindowStation, SetProcessWindowStation et SetThreadDesktop cela
devrait permettre de choisir le bureau Winsta0\Desktop afin d'y
installer un hook (ou encore une icone dans le systray). Ca marche avec
un service qui se lance lorsque qqun se logue, mais je sais pas si ca
marche quand deux personnes se logue et quand le service se lance au
démarrage.



Autre possibilité (mais pas encore testée), installer le service en y
mettant le flag SERVICE_INTERACTIVE_PROCESS. Ceci devrait permettre
d'utiliser une interface graphique depuis le service.



Selon MSDN ces méthodes sont dangereuses pour la sécurité du service,
parce que des programmes utilisateurs pourrait contrôler le serivce (ou
du moins la fenêtre). Il faudrait dès lors utiliser un service avec un
programme (mis dans la clef Run, comme l'a dit BruNews) qui
"discuterait" avec le service avec différente façon. Ici ==> un article intéréssant sinon il existe un article fait par Microsoft, mais je le retrouve plus... .


La taupe voit toujours tout (sauf les bugs)