IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Windows XP – Windows 7


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 214
    Points : 99
    Points
    99
    Par défaut Windows XP – Windows 7
    Bonjour,
    J’ai sous XP un programme qui marche très bien : pour résumer un simple prog1.exe sans fenêtre (donc qui ne se voit pas sur l’écran) qui appelle un prog2.dll, le prog2.dll fait un simple hook du clavier pour récupérer les touches saisies par l’utilisateur lambda. J’ai voulu installer cet ensemble sur un micro fonctionnant sous Windows 7, résultat : deux phénomènes indésirables :
    1.- le plus important : le micro est bloqué dès qu’on tape sur une touche.
    2.- très gênant : l’icône de prog1.exe s’affiche en bas de l’écran.
    Question : Y a-t-il un moyen simple de résoudre ces deux problèmes
    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Plusieurs problèmes se posent avec les hooks et le passage sous Seven (ou Vista).

    Dans ton cas, l'une des causes pourrait être que tu échanges des données entre processus à l'aide d'un fichier mappé. Sa fonctionne parfaitement sous XP, mais plus sous Seven si les deux applications ont un niveau d'intégrité différent. Ce sera par exemple le cas entre ton application et IE en mode protégé. Deadlock assuré

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 214
    Points : 99
    Points
    99
    Par défaut Win XP / Win seven
    Merci pour la réponse, effectivement chaque exécution de ma dll récupère des infos de l'exécution précédente de la même dll au travers d'un fichier mappé. Si c'est uniquement ça le problème, je peux résoudre ce problème sous seven en utilisant un fichier ordinaire pour passer les valeurs précédentes de mes datas, à moins que tu aies une idée plus appropriée. Mais reste quand même le deuxième problème que je signalais et pour lequel je n'ai pas d'explication: à savoir pourquoi l'icône du programme principal (celui qui lance la dll) s'affiche au-dessus de la barre des tâches alors que ce programme n'a pas de fenêtre ! A moins que les deux problèmes soient liés !
    Par ailleurs qu'appelles-tu niveaux d'intégrité identiques, peut-on (et comment) changer un niveau d'intégrité pour résoudre plus facilement le 1er point ?

    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Concernant l'attribution du niveau d'intégrité, tu trouves des infos ici. (mais le changer risque d'engendrer d'autres problèmes de droits d'accès...)

    Pour le reste, soit tu mets en place un IPC. Par exemple un simple PostMessage contenant VK et ScanCode ou tu modifies le type de hook et le remplace par un hook de bas niveau qui te permettra de t'affranchir de la contrainte échange de données puisque celui-ci tourne dans le contexte de ton application

    Hook global par injection et fichier mappé ne font plus bon ménage sous Vista-Seven. A proscrire !

    Si le point 2 n'est pas lié, je te conseille de poser ta question dans le forum relatif à ton langage de programmation.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 214
    Points : 99
    Points
    99
    Par défaut ipc
    J'avais lu quelque part que les hook de bas niveau devaient se trouver dans une dll, si c'est le cas il me suffit de changer dans ma dll un WH_KEYBOARD en WH_KEYBOARD_LL, mais je crois comprendre que dans ton message tu dis le contraire. Si tu confirmes, est-ce que si je supprime la dll et que je fais tout le hook de bas niveau dans mon programme principal, ça détournera bien les touches clavier tapées sous les autres processus ? Pour tes autres suggestions, concernant cette fois-ci la conservation de la dll, je ne suis pas un spécialiste des IPC, je risque d'avoir du mal à m'en sortir. De plus, j'ai beaucoup de datas à passer d'une exécution à l'autre de ma dll et j'ai vu que ma suggestion de passer ces datas via un fichier temporaire n'avait pas retenu ton attention.
    Merci

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par Athur Voir le message
    J'avais lu quelque part que les hook de bas niveau devaient se trouver dans une dll
    Ca n'est pas obligatoire contrairement aux hooks "standards" (injectés) puisque ce code est systématiquement exécuté dans le processus qui l'a créé.

    Citation Envoyé par Athur Voir le message
    si c'est le cas il me suffit de changer dans ma dll un WH_KEYBOARD en WH_KEYBOARD_LL
    Pour la mise en place, c'est la seule chose à faire Attention cependant au Callbacks. L'interprétation des paramètres est différente.

    Citation Envoyé par Athur Voir le message
    si je supprime la dll et que je fais tout le hook de bas niveau dans mon programme principal, ça détournera bien les touches clavier tapées sous les autres processus ?
    Sans aucun doute

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 214
    Points : 99
    Points
    99
    Par défaut hook sous win7
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Installer Windows Vista & Windows 2003 Serveur
    Par dahu17 dans le forum Installation
    Réponses: 2
    Dernier message: 23/05/2007, 11h18
  2. [ODBC] Problème entre client windows, serveur windows
    Par Mascotte dans le forum Installation
    Réponses: 13
    Dernier message: 13/09/2006, 12h15
  3. Différence windows et windows mobile
    Par FamiDoo dans le forum Windows
    Réponses: 1
    Dernier message: 07/06/2006, 10h00
  4. Compatibilité Windows XP/windows 98
    Par chleuh dans le forum Windows
    Réponses: 3
    Dernier message: 22/08/2005, 14h15
  5. window.open window.focus
    Par lucie.houel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/08/2005, 16h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo