Problème de hook clavier

Résolu
Oeil_de_taupe Messages postés 150 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 février 2009 - 8 août 2005 à 18:19
Oeil_de_taupe Messages postés 150 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 février 2009 - 29 nov. 2005 à 18:54
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 août 2005 à 20:55
Inscrit ton prog dans clé 'run' de la base de registres.

ciao...
BruNews, MVP VC++
3
Oeil_de_taupe Messages postés 150 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 février 2009
8 août 2005 à 20:43
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)
0
Oeil_de_taupe Messages postés 150 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 février 2009
9 août 2005 à 15:14
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)
0
Oeil_de_taupe Messages postés 150 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 février 2009
29 nov. 2005 à 18:54
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)
0
Rejoignez-nous