|
| Hook (SetWindowsHookExA) vs événement |
| Iniciado por xof, 28,mar. 2020 10:29 - 4 respuestas |
| |
| | | |
|
| |
Miembro registrado 282 mensajes |
|
| Publicado el 28,marzo 2020 - 10:29 |
Bonjour, J'ai une application qui fige parfois et je soupçonne fortement un hook d'être à l'origine des blocages. On crée notre hook dans le constructeur d'un objet global au projet
:nHdlHook =API("user32","SetWindowsHookExA",13,&Affiche_Fenetre_EnCour,Instance(),0) et on le détruit dans le destructeur, en sortie de programme.
SI :nHdlHook<>-1 ALORS API("user32","UnhookWindowsHookEx",:nHdlHook) FIN Les developpeurs qui l'ont mis en place ne sont plus là et les survivants ne savent vraisemblablement pas ni pourquoi le hook a été utilisé, ni trop comment fonctionne cette API. La procédure en question analyse quelques combinaisons de touches un peu "exotiques" et déclenche des petits traitements a priori simplement utiles pour les développeurs. Pour autant, il me semble que la fonction événement de Windev pourrait faire l'affaire.
Avez-vous des conseils à me donner ? D'avance, merci pour vos lumières.
-- Christophe Charron |
| |
| |
| | | |
|
| | |
| |
| Publicado el 28,marzo 2020 - 22:53 |
> :nHdlHook =API("user32","SetWindowsHookExA",13,&Affiche_Fenetre_EnCour,Instance(),0)
"SetWindowsHookExA",13 permet de scruter bas niveau les touches frappées sur le clavier AVANT que leur status ne soit modifié (avant toucheenfoncée, donc)
Je ne vois pas pourquoi tu rais besoin d'un truc pareil pour quoi que ce soit de standard dans une appli de gestion, c'est plutot le genre de truc qu'un debuggeur ou équivalent utiliserait
Donc, sauf si ton programme a besoin de faire des choses AVANT que le code normal et les événements standards des fenêtres windev ne soient déclenchées, ca ne sert à rien. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 282 mensajes |
|
| Publicado el 29,marzo 2020 - 09:33 |
Bonjour Argus.
Merci pour cet éclairage. Cela confirme ce que je pensais. Car la procédure appelée ne fait que des tests sur des combinaisons de toucheenfoncee !!
-- Christophe Charron |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 356 mensajes |
|
| Publicado el 30,marzo 2020 - 16:41 |
Bonjour Christophe,
J'ajouterai cependant que l'utilisation d'un Hook sur les événements clavier (le 13) permet de lancer la procédure "Affiche_Fenetre_EnCour" dans ton code même si l'application est en arriére plan. En fait dans ce cas dès qu'une touche clavier est enfoncée depuis n'importe quelle application la procédure est appelée. Reste à savoir ce que fait la procédure.
A+
-- Francis MOREL http://www.SoftProtect.fr |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 282 mensajes |
|
| Publicado el 08,abril 2020 - 16:03 |
Salut Francis, et bien cette procédure teste les touches de fonction et selon, ouvre une fenêtre, active une trace ... Ce que je faisais il y a longtemps en jouant avec les événements, me semble-t'il... A bientôt se boire une bière ensemble ...
@+
-- Christophe Charron |
| |
| |
| | | |
|
| | | | |
| | |
|