goutbouyo
Messages postés429Date d'inscriptionmardi 6 juillet 2004StatutMembreDernière intervention12 janvier 2008
-
3 oct. 2004 à 15:21
cs_sabran
Messages postés10Date d'inscriptionsamedi 5 juin 2004StatutMembreDernière intervention26 juillet 2005
-
6 oct. 2004 à 01:21
Salut,
Je voudrais mettre un hook général sur le clavier pendant une progress bar.
J'ai essayé en mettant un WinExec sur un programme trouvé sur ce site qui fait un hook clavier de 15s, mais le problème c'est qu'on ne voit plus avancer la progress bar.
Si je met un hook global directement dans mon code cela devrait il marcher ???
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 3 oct. 2004 à 18:12
J'ai deja fait des machins de ce genre, va voir dans les sources.
Note que c'etait surtout demo de hook parce que le CTRL-ALT-SUPP ne peut plus se hooker du tout a partir de Server 2003, le systeme bloquant tous les processus illico. Il reste par contre la solution de modif de cle dans la base de registres.
ciao...
BruNews, MVP VC++
Vous n’avez pas trouvé la réponse que vous recherchez ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 3 oct. 2004 à 18:49
Sous XP on peut encore hooker la boite, Server 2003 est apres XP.
HKEY_CURRENT_USER
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System
"DisableTaskMgr" = 1 pour invalider
Supprimer cette valeur pour reactiver.
goutbouyo
Messages postés429Date d'inscriptionmardi 6 juillet 2004StatutMembreDernière intervention12 janvier 2008 3 oct. 2004 à 19:02
Donc j'ai pas besoin de modifier la base de registre alors.
Par contre mon hook marche pas: si je met un hook sur entrer pendant ma progressbar, j'aurais le message du hook seulement quand ma progressbar est arrivé au bout.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 3 oct. 2004 à 19:07
Un 'message' de hook ???
Un hook ne doit jamais afficher de messagebox ou autre truc bloquant, il doit repasser la main le plus rapidement possible sinon le systeme passera outre sans en tenir compte.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 3 oct. 2004 à 19:18
Un messagebox depuis un hook, surement pas dans mes sources ou alors tu auras lu en diagonale.
Tu peux par contre envoyer un PostMessage(), la pas de prob car non bloquant.
Arrange plutot la source que tu as mise ce jour, il y a du boulot pour la rendre presentable, tu auras tout le temps de voir les hooks plus tard.
Mais je ne peux pas faire une détection de touche en dehors de mon application.
Mon but c'est de faire un switch entre mon appli et une autre appli à laquelle je n'ai pas accès au code. Je veux changer de fenêtre à volonté avec F11 et F12.
J'utilise SetForegroundWindow, je peux aller à l'application Calculatrice par exemple, mais pas revenir de calculatrice à mon appli.
C'est comme si le hook marche juste sur mon appli mais pourtant le dernier param de mon Hook est 0, donc devrait marcher...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 3 oct. 2004 à 23:10
CTRL-ALT-SUPP a un statut special et est traite malgre le hook, tu reçois les codes de touche mais le systeme transmet dans tous les cas.
Faut hooker la creation de la boite.
cs_sabran
Messages postés10Date d'inscriptionsamedi 5 juin 2004StatutMembreDernière intervention26 juillet 2005 4 oct. 2004 à 00:22
Oui Brunews, le hook est le même que ton exemple.
Au départ j'ai essayé SetForegroundWindow directement dans le proc de la dll. J'ai vu ton message ici qui dit qu'il est mieux de passer par un PostMessage alors je l'ai fait.
Un truc : Je pouvais détecter F12 pour envoyer un msgbox quand je le faisais dans le proc de la dll. À partir de n'importe où. Mais pour SetForegroundWindow, ShowWindow, nada. Ça ne marche que si mon appli à le focus, pas ailleurs.
cs_sabran
Messages postés10Date d'inscriptionsamedi 5 juin 2004StatutMembreDernière intervention26 juillet 2005 4 oct. 2004 à 02:01
Je veux un hook global sur le clavier. Ça me permet d'afficher ma fenêtre avec F12 et d'afficher une autre fenêtre avec F11.
D'un côté mon application et de l'autre l'application client.
Je veux être child-window du client et pouvoir soi cacher(F11) soi afficher ma fenêtre(F12).
C'est une application qu'il y a à mon travail. Je vais sauver du temps si je fais faire par mon programme des choses que l'application du travail ne fait pas. Je pourrais changer de fenêtre avec la souris mais je tape toujours au clavier alors ça irais mieux.
Je procède comme ça.
Je fais une dll que je compile sous vc++. Il y a à l'intérieur le hook. Au touche F11 et F12, un PostMessage est envoyé à mon programme.
Mon problème est que je n'arrive pas à agir de l'extérieur de ma fenêtre. Il faut absolument que ma fenêtre soi active pour que le hook agisse.
Sais-tu comment je peux faire ça? Je veux juste pouvoir changer entre deux fenêtre celle qui est active à l'aide des touches du clavier.
Ensuite je vais devoir envoyer des touches clavier au programme du travail pour y entrer les données.